From: Jens Axboe <axboe@fb.com>
To: <linux-kernel@vger.kernel.org>, <linux-fsdevel@vger.kernel.org>
Cc: Jens Axboe <axboe@fb.com>, Chris Mason <clm@fb.com>
Subject: [PATCH 2/3] btrfs: pass in DIO_SKIP_DIO_COUNT to do_blockdev_direct_IO()
Date: Wed, 15 Apr 2015 16:01:37 -0600 [thread overview]
Message-ID: <1429135298-17153-3-git-send-email-axboe@fb.com> (raw)
In-Reply-To: <1429135298-17153-1-git-send-email-axboe@fb.com>
btrfs_direct_IO() already holds the inode i_dio_count elevated, so
pass in that do_blockdev_direct_IO() does not need to. If we end
up dropping the inode dio count before calling this function, then
we drop the flag as well.
Cc: Chris Mason <clm@fb.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
---
fs/btrfs/inode.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 6fe341a66ed8..3ecac37f10e0 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -8121,8 +8121,7 @@ static ssize_t btrfs_direct_IO(int rw, struct kiocb *iocb,
struct inode *inode = file->f_mapping->host;
u64 outstanding_extents = 0;
size_t count = 0;
- int flags = 0;
- bool wakeup = true;
+ int flags = DIO_SKIP_DIO_COUNT;
bool relock = false;
ssize_t ret;
@@ -8170,8 +8169,11 @@ static ssize_t btrfs_direct_IO(int rw, struct kiocb *iocb,
} else if (test_bit(BTRFS_INODE_READDIO_NEED_LOCK,
&BTRFS_I(inode)->runtime_flags)) {
inode_dio_dec(inode);
+ /*
+ * we know need i_dio_count inc/dec, the below overwrites
+ * the skip inc/dec flag.
+ */
flags = DIO_LOCKING | DIO_SKIP_HOLES;
- wakeup = false;
}
ret = __blockdev_direct_IO(rw, iocb, inode,
@@ -8187,7 +8189,7 @@ static ssize_t btrfs_direct_IO(int rw, struct kiocb *iocb,
count - (size_t)ret);
}
out:
- if (wakeup)
+ if (flags & DIO_SKIP_DIO_COUNT)
inode_dio_dec(inode);
if (relock)
mutex_lock(&inode->i_mutex);
--
1.9.1
next prev parent reply other threads:[~2015-04-15 22:01 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-15 22:01 [PATCH v2] direct-io: only inc/dec inode->i_dio_count for file systems Jens Axboe
2015-04-15 22:01 ` [PATCH 1/3] " Jens Axboe
2015-04-15 22:36 ` Dave Chinner
2015-04-15 22:56 ` Al Viro
2015-04-15 23:05 ` Jens Axboe
2015-04-15 23:30 ` Al Viro
2015-04-15 23:50 ` Jens Axboe
2015-04-15 22:57 ` Jens Axboe
2015-04-15 22:01 ` Jens Axboe [this message]
2015-04-15 22:01 ` [PATCH 3/3] ext4: pass in DIO_SKIP_DIO_COUNT to do_blockdev_direct_IO() Jens Axboe
2015-04-15 22:05 ` [PATCH v2] direct-io: only inc/dec inode->i_dio_count for file systems Al Viro
2015-04-15 22:06 ` Jens Axboe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1429135298-17153-3-git-send-email-axboe@fb.com \
--to=axboe@fb.com \
--cc=clm@fb.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.