proc: switch struct proc_dir_entry::count to refcount
[sfrench/cifs-2.6.git] / fs / direct-io.c
index 1357ef563893a1a8f0d2967eeb4b6e7b0ee6444a..874607bb6e02134b8b185f333537a134d791d85d 100644 (file)
@@ -315,8 +315,7 @@ static ssize_t dio_complete(struct dio *dio, ssize_t ret, unsigned int flags)
                        dio_warn_stale_pagecache(dio->iocb->ki_filp);
        }
 
-       if (!(dio->flags & DIO_SKIP_DIO_COUNT))
-               inode_dio_end(dio->inode);
+       inode_dio_end(dio->inode);
 
        if (flags & DIO_COMPLETE_ASYNC) {
                /*
@@ -1178,9 +1177,9 @@ do_blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
        unsigned blkbits = i_blkbits;
        unsigned blocksize_mask = (1 << blkbits) - 1;
        ssize_t retval = -EINVAL;
-       size_t count = iov_iter_count(iter);
+       const size_t count = iov_iter_count(iter);
        loff_t offset = iocb->ki_pos;
-       loff_t end = offset + count;
+       const loff_t end = offset + count;
        struct dio *dio;
        struct dio_submit sdio = { 0, };
        struct buffer_head map_bh = { 0, };
@@ -1201,7 +1200,7 @@ do_blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
        }
 
        /* watch out for a 0 len io from a tricksy fs */
-       if (iov_iter_rw(iter) == READ && !iov_iter_count(iter))
+       if (iov_iter_rw(iter) == READ && !count)
                return 0;
 
        dio = kmem_cache_alloc(dio_cache, GFP_KERNEL);
@@ -1252,8 +1251,7 @@ do_blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
         */
        if (is_sync_kiocb(iocb))
                dio->is_async = false;
-       else if (!(dio->flags & DIO_ASYNC_EXTEND) &&
-                iov_iter_rw(iter) == WRITE && end > i_size_read(inode))
+       else if (iov_iter_rw(iter) == WRITE && end > i_size_read(inode))
                dio->is_async = false;
        else
                dio->is_async = true;
@@ -1297,8 +1295,7 @@ do_blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
        /*
         * Will be decremented at I/O completion time.
         */
-       if (!(dio->flags & DIO_SKIP_DIO_COUNT))
-               inode_dio_begin(inode);
+       inode_dio_begin(inode);
 
        retval = 0;
        sdio.blkbits = blkbits;
@@ -1318,8 +1315,7 @@ do_blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
 
        dio->should_dirty = (iter->type == ITER_IOVEC);
        sdio.iter = iter;
-       sdio.final_block_in_request =
-               (offset + iov_iter_count(iter)) >> blkbits;
+       sdio.final_block_in_request = end >> blkbits;
 
        /*
         * In case of non-aligned buffers, we may need 2 more