* [PATCH 0/2] losetup: support direct-IO to backing file @ 2015-11-07 0:40 Ming Lei 2015-11-07 0:40 ` [PATCH 1/2] losetup: support ioctl cmd of LOOP_SET_DIRECT_IO Ming Lei ` (2 more replies) 0 siblings, 3 replies; 9+ messages in thread From: Ming Lei @ 2015-11-07 0:40 UTC (permalink / raw) To: util-linux Hi, The loop direct I/O patches[1] have been merged to linus kernel tree and will be released in v4.4. So the two patches provide interfaces for using direct IO/AIO in losetup. include/loopdev.h | 4 ++++ lib/loopdev.c | 40 ++++++++++++++++++++++++++++++++++++++++ sys-utils/losetup.c | 30 +++++++++++++++++++++++++++--- 3 files changed, 71 insertions(+), 3 deletions(-) [1] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bc07c10a3603a5ab3ef01ba42b3d41f9ac63d1b6 Thanks, Ming ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/2] losetup: support ioctl cmd of LOOP_SET_DIRECT_IO 2015-11-07 0:40 [PATCH 0/2] losetup: support direct-IO to backing file Ming Lei @ 2015-11-07 0:40 ` Ming Lei 2015-11-07 0:40 ` [PATCH 2/2] losetup: support list direct io Ming Lei 2015-11-09 10:29 ` [PATCH 0/2] losetup: support direct-IO to backing file Karel Zak 2 siblings, 0 replies; 9+ messages in thread From: Ming Lei @ 2015-11-07 0:40 UTC (permalink / raw) To: util-linux; +Cc: Ming Lei >From v4.4, linux kernel starts to support direct I/O and AIO to backing file for loop driver, so allow losetup to enable the feature by using LOOP_SET_DIRECT_IO ioctl cmd. Signed-off-by: Ming Lei <tom.leiming@gmail.com> --- include/loopdev.h | 2 ++ lib/loopdev.c | 18 ++++++++++++++++++ sys-utils/losetup.c | 24 +++++++++++++++++++++--- 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/include/loopdev.h b/include/loopdev.h index 573a569..9a7f6ba 100644 --- a/include/loopdev.h +++ b/include/loopdev.h @@ -23,6 +23,7 @@ #define LOOP_GET_STATUS64 0x4C05 /* #define LOOP_CHANGE_FD 0x4C06 */ #define LOOP_SET_CAPACITY 0x4C07 +#define LOOP_SET_DIRECT_IO 0x4C08 /* /dev/loop-control interface */ #ifndef LOOP_CTL_ADD @@ -164,6 +165,7 @@ extern int loopcxt_next(struct loopdev_cxt *lc); extern int loopcxt_setup_device(struct loopdev_cxt *lc); extern int loopcxt_delete_device(struct loopdev_cxt *lc); extern int loopcxt_set_capacity(struct loopdev_cxt *lc); +extern int loopcxt_set_dio(struct loopdev_cxt *lc, unsigned long use_dio); int loopcxt_set_offset(struct loopdev_cxt *lc, uint64_t offset); int loopcxt_set_sizelimit(struct loopdev_cxt *lc, uint64_t sizelimit); diff --git a/lib/loopdev.c b/lib/loopdev.c index fe047cd..ff99dd4 100644 --- a/lib/loopdev.c +++ b/lib/loopdev.c @@ -1315,6 +1315,24 @@ int loopcxt_set_capacity(struct loopdev_cxt *lc) return 0; } +int loopcxt_set_dio(struct loopdev_cxt *lc, unsigned long use_dio) +{ + int fd = loopcxt_get_fd(lc); + + if (fd < 0) + return -EINVAL; + + /* Kernels prior to v4.4 don't support this ioctl */ + if (ioctl(fd, LOOP_SET_DIRECT_IO, use_dio) < 0) { + int rc = -errno; + DBG(CXT, ul_debugobj(lc, "LOOP_SET_DIRECT_IO failed: %m")); + return rc; + } + + DBG(CXT, ul_debugobj(lc, "direct io set")); + return 0; +} + int loopcxt_delete_device(struct loopdev_cxt *lc) { int fd = loopcxt_get_fd(lc); diff --git a/sys-utils/losetup.c b/sys-utils/losetup.c index a68b222..8403621 100644 --- a/sys-utils/losetup.c +++ b/sys-utils/losetup.c @@ -35,6 +35,7 @@ enum { A_SHOW_ONE, /* print info about one device */ A_FIND_FREE, /* find first unused */ A_SET_CAPACITY, /* set device capacity */ + A_SET_DIRECT_IO, /* set accessing backing file by direct io */ }; enum { @@ -393,6 +394,7 @@ static void usage(FILE *out) fputs(_(" --sizelimit <num> device is limited to <num> bytes of the file\n"), out); fputs(_(" -P, --partscan create a partitioned loop device\n"), out); fputs(_(" -r, --read-only set up a read-only loop device\n"), out); + fputs(_(" --direct-io open backing file with O_DIRECT\n"), out); fputs(_(" --show print device name after setup (with -f)\n"), out); fputs(_(" -v, --verbose verbose mode\n"), out); @@ -446,11 +448,13 @@ int main(int argc, char **argv) int res = 0, showdev = 0, lo_flags = 0; char *outarg = NULL; int list = 0; + unsigned long use_dio = 0; enum { OPT_SIZELIMIT = CHAR_MAX + 1, OPT_SHOW, - OPT_RAW + OPT_RAW, + OPT_DIO }; static const struct option longopts[] = { { "all", 0, 0, 'a' }, @@ -468,6 +472,7 @@ int main(int argc, char **argv) { "sizelimit", 1, 0, OPT_SIZELIMIT }, { "partscan", 0, 0, 'P' }, { "read-only", 0, 0, 'r' }, + { "direct-io", 1, 0, OPT_DIO }, { "raw", 0, 0, OPT_RAW }, { "show", 0, 0, OPT_SHOW }, { "verbose", 0, 0, 'v' }, @@ -557,6 +562,10 @@ int main(int argc, char **argv) case OPT_SHOW: showdev = 1; break; + case OPT_DIO: + act = A_SET_DIRECT_IO; + use_dio = strtoul_or_err(optarg, _("failed to parse dio")); + break; case 'v': break; case 'V': @@ -606,11 +615,14 @@ int main(int argc, char **argv) */ act = A_SHOW; - if (!act && optind + 1 == argc) { + if ((!act || act == A_SET_DIRECT_IO) && optind + 1 == argc) { /* * losetup [--list] <device> + * OR + * losetup --direct-io DIO <device> */ - act = A_SHOW_ONE; + if (!act) + act = A_SHOW_ONE; if (!is_loopdev(argv[optind]) || loopcxt_set_device(&lc, argv[optind])) err(EXIT_FAILURE, _("%s: failed to use device"), @@ -747,6 +759,12 @@ int main(int argc, char **argv) warn(_("%s: set capacity failed"), loopcxt_get_device(&lc)); break; + case A_SET_DIRECT_IO: + res = loopcxt_set_dio(&lc, use_dio); + if (res) + warn(_("%s: set direct io failed"), + loopcxt_get_device(&lc)); + break; default: usage(stderr); break; -- 1.9.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/2] losetup: support list direct io 2015-11-07 0:40 [PATCH 0/2] losetup: support direct-IO to backing file Ming Lei 2015-11-07 0:40 ` [PATCH 1/2] losetup: support ioctl cmd of LOOP_SET_DIRECT_IO Ming Lei @ 2015-11-07 0:40 ` Ming Lei 2015-11-09 10:29 ` [PATCH 0/2] losetup: support direct-IO to backing file Karel Zak 2 siblings, 0 replies; 9+ messages in thread From: Ming Lei @ 2015-11-07 0:40 UTC (permalink / raw) To: util-linux; +Cc: Ming Lei So that user can see if DIO is set for current loop device. Signed-off-by: Ming Lei <tom.leiming@gmail.com> --- include/loopdev.h | 2 ++ lib/loopdev.c | 22 ++++++++++++++++++++++ sys-utils/losetup.c | 6 ++++++ 3 files changed, 30 insertions(+) diff --git a/include/loopdev.h b/include/loopdev.h index 9a7f6ba..18ca41f 100644 --- a/include/loopdev.h +++ b/include/loopdev.h @@ -40,6 +40,7 @@ enum { LO_FLAGS_USE_AOPS = 2, LO_FLAGS_AUTOCLEAR = 4, /* kernel >= 2.6.25 */ LO_FLAGS_PARTSCAN = 8, /* kernel >= 3.2 */ + LO_FLAGS_DIRECT_IO = 16, /* kernel >= 4.2 */ }; #define LO_NAME_SIZE 64 @@ -181,6 +182,7 @@ extern int loopcxt_get_encrypt_type(struct loopdev_cxt *lc, uint32_t *type); extern const char *loopcxt_get_crypt_name(struct loopdev_cxt *lc); extern int loopcxt_is_autoclear(struct loopdev_cxt *lc); extern int loopcxt_is_readonly(struct loopdev_cxt *lc); +extern int loopcxt_is_dio(struct loopdev_cxt *lc); extern int loopcxt_is_partscan(struct loopdev_cxt *lc); extern int loopcxt_find_by_backing_file(struct loopdev_cxt *lc, const char *filename, diff --git a/lib/loopdev.c b/lib/loopdev.c index ff99dd4..54c6200 100644 --- a/lib/loopdev.c +++ b/lib/loopdev.c @@ -955,6 +955,28 @@ int loopcxt_is_readonly(struct loopdev_cxt *lc) /* * @lc: context + * + * Returns: 1 if the dio flags is set. + */ +int loopcxt_is_dio(struct loopdev_cxt *lc) +{ + struct sysfs_cxt *sysfs = loopcxt_get_sysfs(lc); + + if (sysfs) { + int fl; + if (sysfs_read_int(sysfs, "loop/dio", &fl) == 0) + return fl; + } + if (loopcxt_ioctl_enabled(lc)) { + struct loop_info64 *lo = loopcxt_get_info(lc); + if (lo) + return lo->lo_flags & LO_FLAGS_DIRECT_IO; + } + return 0; +} + +/* + * @lc: context * @st: backing file stat or NULL * @backing_file: filename * @offset: offset diff --git a/sys-utils/losetup.c b/sys-utils/losetup.c index 8403621..f4c9213 100644 --- a/sys-utils/losetup.c +++ b/sys-utils/losetup.c @@ -49,6 +49,7 @@ enum { COL_PARTSCAN, COL_RO, COL_SIZELIMIT, + COL_DIO, }; /* basic output flags */ @@ -74,6 +75,7 @@ static struct colinfo infos[] = { [COL_RO] = { "RO", 1, SCOLS_FL_RIGHT, N_("read-only device")}, [COL_SIZELIMIT] = { "SIZELIMIT", 5, SCOLS_FL_RIGHT, N_("size limit of the file in bytes")}, [COL_MAJMIN] = { "MAJ:MIN", 3, 0, N_("loop device major:minor number")}, + [COL_DIO] = { "DIO", 1, SCOLS_FL_RIGHT, N_("access backing file with direct-io")}, }; static int columns[ARRAY_SIZE(infos) * 2] = {-1}; @@ -271,6 +273,9 @@ static int set_scols_data(struct loopdev_cxt *lc, struct libscols_line *ln) case COL_RO: p = loopcxt_is_readonly(lc) ? "1" : "0"; break; + case COL_DIO: + p = loopcxt_is_dio(lc) ? "1" : "0"; + break; case COL_PARTSCAN: p = loopcxt_is_partscan(lc) ? "1" : "0"; break; @@ -599,6 +604,7 @@ int main(int argc, char **argv) columns[ncolumns++] = COL_AUTOCLR; columns[ncolumns++] = COL_RO; columns[ncolumns++] = COL_BACK_FILE; + columns[ncolumns++] = COL_DIO; } if (act == A_FIND_FREE && optind < argc) { -- 1.9.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 0/2] losetup: support direct-IO to backing file 2015-11-07 0:40 [PATCH 0/2] losetup: support direct-IO to backing file Ming Lei 2015-11-07 0:40 ` [PATCH 1/2] losetup: support ioctl cmd of LOOP_SET_DIRECT_IO Ming Lei 2015-11-07 0:40 ` [PATCH 2/2] losetup: support list direct io Ming Lei @ 2015-11-09 10:29 ` Karel Zak 2015-11-09 11:29 ` Ming Lei 2 siblings, 1 reply; 9+ messages in thread From: Karel Zak @ 2015-11-09 10:29 UTC (permalink / raw) To: Ming Lei; +Cc: util-linux On Sat, Nov 07, 2015 at 08:40:16AM +0800, Ming Lei wrote: > The loop direct I/O patches[1] have been merged to linus kernel tree > and will be released in v4.4. > > So the two patches provide interfaces for using direct IO/AIO > in losetup. Thanks! > include/loopdev.h | 4 ++++ > lib/loopdev.c | 40 ++++++++++++++++++++++++++++++++++++++++ > sys-utils/losetup.c | 30 +++++++++++++++++++++++++++--- > 3 files changed, 71 insertions(+), 3 deletions(-) > > [1] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bc07c10a3603a5ab3ef01ba42b3d41f9ac63d1b6 If I read correctly the kernel code than LO_FLAGS_DIRECT_IO is not possible to use when initialize loop device by LOOP_SET_FD ioctl. I need extra LOOP_SET_DIRECT_IO ioctl. Why? Why kernel function loop_set_fd() does not initialize lo->use_dio according to "lo_flags & LO_FLAGS_DIRECT_IO" as we use for another loopdev stuff? See for example LO_FLAGS_PARTSCAN. Would be possible to improve kernel a little bit? Now you have to use two commands (ioctls): # losetup /dev/loop0 file.img # losetup --direct-io 1 /dev/loop0 It's fine to use --direct-io as toggle, but it would be nice to support it also when initialize the device. Karel -- Karel Zak <kzak@redhat.com> http://karelzak.blogspot.com ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/2] losetup: support direct-IO to backing file 2015-11-09 10:29 ` [PATCH 0/2] losetup: support direct-IO to backing file Karel Zak @ 2015-11-09 11:29 ` Ming Lei 2015-11-09 11:46 ` Karel Zak 0 siblings, 1 reply; 9+ messages in thread From: Ming Lei @ 2015-11-09 11:29 UTC (permalink / raw) To: Karel Zak; +Cc: util-linux On Mon, Nov 9, 2015 at 6:29 PM, Karel Zak <kzak@redhat.com> wrote: > On Sat, Nov 07, 2015 at 08:40:16AM +0800, Ming Lei wrote: >> The loop direct I/O patches[1] have been merged to linus kernel tree >> and will be released in v4.4. >> >> So the two patches provide interfaces for using direct IO/AIO >> in losetup. > > Thanks! > >> include/loopdev.h | 4 ++++ >> lib/loopdev.c | 40 ++++++++++++++++++++++++++++++++++++++++ >> sys-utils/losetup.c | 30 +++++++++++++++++++++++++++--- >> 3 files changed, 71 insertions(+), 3 deletions(-) >> >> [1] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=bc07c10a3603a5ab3ef01ba42b3d41f9ac63d1b6 > > If I read correctly the kernel code than LO_FLAGS_DIRECT_IO is not > possible to use when initialize loop device by LOOP_SET_FD ioctl. I > need extra LOOP_SET_DIRECT_IO ioctl. Why? > > Why kernel function loop_set_fd() does not initialize lo->use_dio > according to "lo_flags & LO_FLAGS_DIRECT_IO" as we use for another > loopdev stuff? See for example LO_FLAGS_PARTSCAN. Would be possible > to improve kernel a little bit? One case we need to support is 'mount -o loop', which is a bit different with PARTSCAN. > > > Now you have to use two commands (ioctls): > > # losetup /dev/loop0 file.img > # losetup --direct-io 1 /dev/loop0 > > It's fine to use --direct-io as toggle, but it would be nice to > support it also when initialize the device. OK, looks a good idea, but we still need to support the standalone command for direct-io for the case of 'mount -o loop'. > > Karel > > > -- > Karel Zak <kzak@redhat.com> > http://karelzak.blogspot.com -- Ming Lei ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/2] losetup: support direct-IO to backing file 2015-11-09 11:29 ` Ming Lei @ 2015-11-09 11:46 ` Karel Zak 2015-11-10 6:05 ` Ming Lei 0 siblings, 1 reply; 9+ messages in thread From: Karel Zak @ 2015-11-09 11:46 UTC (permalink / raw) To: Ming Lei; +Cc: util-linux On Mon, Nov 09, 2015 at 07:29:21PM +0800, Ming Lei wrote: > > It's fine to use --direct-io as toggle, but it would be nice to > > support it also when initialize the device. > > OK, looks a good idea, but we still need to support the standalone > command for direct-io for the case of 'mount -o loop'. Sure, I understand this use-case. I have talked bout loop_set_fd(), maybe all we need is: diff --git a/drivers/block/loop.c b/drivers/block/loop.c index 423f4ca..22642a0 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -925,7 +925,7 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode, set_device_ro(bdev, (lo_flags & LO_FLAGS_READ_ONLY) != 0); - lo->use_dio = false; + lo->use_dio = (lo_flags & LO_FLAGS_DIRECT_IO); lo->lo_blocksize = lo_blocksize; lo->lo_device = bdev; lo->lo_flags = lo_flags; then we can a little bit modify your losetup.c patches and support --direct-io also for A_CREATE. Karel -- Karel Zak <kzak@redhat.com> http://karelzak.blogspot.com ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 0/2] losetup: support direct-IO to backing file 2015-11-09 11:46 ` Karel Zak @ 2015-11-10 6:05 ` Ming Lei 2015-11-10 11:40 ` Karel Zak 0 siblings, 1 reply; 9+ messages in thread From: Ming Lei @ 2015-11-10 6:05 UTC (permalink / raw) To: Karel Zak; +Cc: util-linux On Mon, Nov 9, 2015 at 7:46 PM, Karel Zak <kzak@redhat.com> wrote: > On Mon, Nov 09, 2015 at 07:29:21PM +0800, Ming Lei wrote: >> > It's fine to use --direct-io as toggle, but it would be nice to >> > support it also when initialize the device. >> >> OK, looks a good idea, but we still need to support the standalone >> command for direct-io for the case of 'mount -o loop'. > > Sure, I understand this use-case. I have talked bout loop_set_fd(), > maybe all we need is: > > > diff --git a/drivers/block/loop.c b/drivers/block/loop.c > index 423f4ca..22642a0 100644 > --- a/drivers/block/loop.c > +++ b/drivers/block/loop.c > @@ -925,7 +925,7 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode, > > set_device_ro(bdev, (lo_flags & LO_FLAGS_READ_ONLY) != 0); > > - lo->use_dio = false; > + lo->use_dio = (lo_flags & LO_FLAGS_DIRECT_IO); > lo->lo_blocksize = lo_blocksize; > lo->lo_device = bdev; > lo->lo_flags = lo_flags; I don't think this change is doable because lo_flags is always started as zero from loop_set_fd(). > > > then we can a little bit modify your losetup.c patches and support > --direct-io also for A_CREATE. That makes sense, and I will submit V1 to support creating one device with direct io. thanks, Ming > > Karel > > -- > Karel Zak <kzak@redhat.com> > http://karelzak.blogspot.com > -- > To unsubscribe from this list: send the line "unsubscribe util-linux" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Ming Lei ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/2] losetup: support direct-IO to backing file 2015-11-10 6:05 ` Ming Lei @ 2015-11-10 11:40 ` Karel Zak 2015-11-10 15:20 ` Ming Lei 0 siblings, 1 reply; 9+ messages in thread From: Karel Zak @ 2015-11-10 11:40 UTC (permalink / raw) To: Ming Lei; +Cc: util-linux On Tue, Nov 10, 2015 at 02:05:39PM +0800, Ming Lei wrote: > On Mon, Nov 9, 2015 at 7:46 PM, Karel Zak <kzak@redhat.com> wrote: > > On Mon, Nov 09, 2015 at 07:29:21PM +0800, Ming Lei wrote: > >> > It's fine to use --direct-io as toggle, but it would be nice to > >> > support it also when initialize the device. > >> > >> OK, looks a good idea, but we still need to support the standalone > >> command for direct-io for the case of 'mount -o loop'. > > > > Sure, I understand this use-case. I have talked bout loop_set_fd(), > > maybe all we need is: > > > > > > diff --git a/drivers/block/loop.c b/drivers/block/loop.c > > index 423f4ca..22642a0 100644 > > --- a/drivers/block/loop.c > > +++ b/drivers/block/loop.c > > @@ -925,7 +925,7 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode, > > > > set_device_ro(bdev, (lo_flags & LO_FLAGS_READ_ONLY) != 0); > > > > - lo->use_dio = false; > > + lo->use_dio = (lo_flags & LO_FLAGS_DIRECT_IO); > > lo->lo_blocksize = lo_blocksize; > > lo->lo_device = bdev; > > lo->lo_flags = lo_flags; > > I don't think this change is doable because lo_flags is always started > as zero from loop_set_fd(). Sorry, wrong function -- should be loop_set_status() where we can modify lo->lo_flags by info->lo_flags. It's already used for LO_FLAGS_AUTOCLEAR and LO_FLAGS_PARTSCAN. Karel -- Karel Zak <kzak@redhat.com> http://karelzak.blogspot.com ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/2] losetup: support direct-IO to backing file 2015-11-10 11:40 ` Karel Zak @ 2015-11-10 15:20 ` Ming Lei 0 siblings, 0 replies; 9+ messages in thread From: Ming Lei @ 2015-11-10 15:20 UTC (permalink / raw) To: Karel Zak; +Cc: util-linux On Tue, Nov 10, 2015 at 7:40 PM, Karel Zak <kzak@redhat.com> wrote: > On Tue, Nov 10, 2015 at 02:05:39PM +0800, Ming Lei wrote: >> On Mon, Nov 9, 2015 at 7:46 PM, Karel Zak <kzak@redhat.com> wrote: >> > On Mon, Nov 09, 2015 at 07:29:21PM +0800, Ming Lei wrote: >> >> > It's fine to use --direct-io as toggle, but it would be nice to >> >> > support it also when initialize the device. >> >> >> >> OK, looks a good idea, but we still need to support the standalone >> >> command for direct-io for the case of 'mount -o loop'. >> > >> > Sure, I understand this use-case. I have talked bout loop_set_fd(), >> > maybe all we need is: >> > >> > >> > diff --git a/drivers/block/loop.c b/drivers/block/loop.c >> > index 423f4ca..22642a0 100644 >> > --- a/drivers/block/loop.c >> > +++ b/drivers/block/loop.c >> > @@ -925,7 +925,7 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode, >> > >> > set_device_ro(bdev, (lo_flags & LO_FLAGS_READ_ONLY) != 0); >> > >> > - lo->use_dio = false; >> > + lo->use_dio = (lo_flags & LO_FLAGS_DIRECT_IO); >> > lo->lo_blocksize = lo_blocksize; >> > lo->lo_device = bdev; >> > lo->lo_flags = lo_flags; >> >> I don't think this change is doable because lo_flags is always started >> as zero from loop_set_fd(). > > Sorry, wrong function -- should be loop_set_status() where we can > modify lo->lo_flags by info->lo_flags. It's already used for > LO_FLAGS_AUTOCLEAR and LO_FLAGS_PARTSCAN. Yes, that might work, but I am opt to use LOOP_SET_DIRECT_IO cmd because set_status is already too fat and it is always safe to use one specific cmd for chaning direct-io. Also there have been bugs in set_status() already and it is always difficult to change things together/atomaticaly especially, for example: - changing lo->transfer may cause oops - partial change in case of failure from figuring size - for direct-io, it may fail too, so it may introduce more trouble to set_status for handling the failure. Thanks, Ming Lei ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2015-11-10 15:20 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-11-07 0:40 [PATCH 0/2] losetup: support direct-IO to backing file Ming Lei 2015-11-07 0:40 ` [PATCH 1/2] losetup: support ioctl cmd of LOOP_SET_DIRECT_IO Ming Lei 2015-11-07 0:40 ` [PATCH 2/2] losetup: support list direct io Ming Lei 2015-11-09 10:29 ` [PATCH 0/2] losetup: support direct-IO to backing file Karel Zak 2015-11-09 11:29 ` Ming Lei 2015-11-09 11:46 ` Karel Zak 2015-11-10 6:05 ` Ming Lei 2015-11-10 11:40 ` Karel Zak 2015-11-10 15:20 ` Ming Lei
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.