Hi, looking at ext_read_adv code (extlinux/main.c) static int ext_read_adv(const char *path, int devfd, const char **namep) { int err; const char *name; if (fs_type == BTRFS) { /* btrfs "ldlinux.sys" is in 64k blank area */ return btrfs_read_adv(devfd); } else if (fs_type == XFS) { /* XFS "ldlinux.sys" is in the first 2048 bytes of the primary AG */ return xfs_read_adv(devfd); } else { err = read_adv(path, name = "ldlinux.sys"); if (err == 2) /* ldlinux.sys does not exist */ err = read_adv(path, name = "extlinux.sys"); if (namep) *namep = name; return err; } } beside the name is quite confusing (ext from extlinux and ext from ext2/3 filesystem), for XFS code xfs_read_adv is called which is static inline int xfs_read_adv(int devfd) { const size_t adv_size = 2 * ADV_SIZE; if (xpread(devfd, syslinux_adv, adv_size, boot_image_len) != adv_size) return -1; return syslinux_validate_adv(syslinux_adv) ? 1 : 0; } boot_image_len for me is about 53 kb so it read after 53 kb after start of partition however comment on ext_read_adv state that 2kb is used. Also in ext_write_adv adv is written with a write_adv which use a file inside the filesystem so the first function looks wrong to me. Well, we are not corrupting XFS cause is a read and never a write but surely adv won't work for xfs code. I did not test it so I could be possible wrong. Frediano