diff options
author | Christoph Hellwig <hch@lst.de> | 2008-11-05 14:58:42 +0100 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2008-12-04 04:22:57 -0500 |
commit | fd4ce1acd0f8558033b1a6968001552bd7671e6d (patch) | |
tree | 7ce54f2b2c967fe2315917ffa2eb8eb7d47e7a2b /block/compat_ioctl.c | |
parent | ebbefc011e56bd85b4745d01e5b8d7d05d95ed5d (diff) |
[PATCH 1/2] kill FMODE_NDELAY_NOW
Update FMODE_NDELAY before each ioctl call so that we can kill the
magic FMODE_NDELAY_NOW. It would be even better to do this directly
in setfl(), but for that we'd need to have FMODE_NDELAY for all files,
not just block special files.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'block/compat_ioctl.c')
-rw-r--r-- | block/compat_ioctl.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/block/compat_ioctl.c b/block/compat_ioctl.c index d43e6087bad..67eb93cff69 100644 --- a/block/compat_ioctl.c +++ b/block/compat_ioctl.c @@ -722,8 +722,14 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg) struct backing_dev_info *bdi; loff_t size; + /* + * O_NDELAY can be altered using fcntl(.., F_SETFL, ..), so we have + * to updated it before every ioctl. + */ if (file->f_flags & O_NDELAY) - mode |= FMODE_NDELAY_NOW; + mode |= FMODE_NDELAY; + else + mode &= ~FMODE_NDELAY; switch (cmd) { case HDIO_GETGEO: |