Loading fs/nfs/pagelist.c +11 −20 Original line number Diff line number Diff line Loading @@ -134,19 +134,14 @@ EXPORT_SYMBOL_GPL(nfs_async_iocounter_wait); /* * nfs_page_group_lock - lock the head of the page group * @req - request in group that is to be locked * @nonblock - if true don't block waiting for lock * * this lock must be held if modifying the page group list * this lock must be held when traversing or modifying the page * group list * * return 0 on success, < 0 on error: -EDELAY if nonblocking or the * result from wait_on_bit_lock * * NOTE: calling with nonblock=false should always have set the * lock bit (see fs/buffer.c and other uses of wait_on_bit_lock * with TASK_UNINTERRUPTIBLE), so there is no need to check the result. * return 0 on success, < 0 on error */ int nfs_page_group_lock(struct nfs_page *req, bool nonblock) nfs_page_group_lock(struct nfs_page *req) { struct nfs_page *head = req->wb_head; Loading @@ -155,16 +150,12 @@ nfs_page_group_lock(struct nfs_page *req, bool nonblock) if (!test_and_set_bit(PG_HEADLOCK, &head->wb_flags)) return 0; if (!nonblock) { set_bit(PG_CONTENDED1, &head->wb_flags); smp_mb__after_atomic(); return wait_on_bit_lock(&head->wb_flags, PG_HEADLOCK, TASK_UNINTERRUPTIBLE); } return -EAGAIN; } /* * nfs_page_group_unlock - unlock the head of the page group * @req - request in group that is to be unlocked Loading Loading @@ -225,7 +216,7 @@ bool nfs_page_group_sync_on_bit(struct nfs_page *req, unsigned int bit) { bool ret; nfs_page_group_lock(req, false); nfs_page_group_lock(req); ret = nfs_page_group_sync_on_bit_locked(req, bit); nfs_page_group_unlock(req); Loading Loading @@ -1016,7 +1007,7 @@ static int __nfs_pageio_add_request(struct nfs_pageio_descriptor *desc, unsigned int bytes_left = 0; unsigned int offset, pgbase; nfs_page_group_lock(req, false); nfs_page_group_lock(req); subreq = req; bytes_left = subreq->wb_bytes; Loading @@ -1038,7 +1029,7 @@ static int __nfs_pageio_add_request(struct nfs_pageio_descriptor *desc, if (mirror->pg_recoalesce) return 0; /* retry add_request for this subreq */ nfs_page_group_lock(req, false); nfs_page_group_lock(req); continue; } Loading Loading @@ -1135,7 +1126,7 @@ int nfs_pageio_add_request(struct nfs_pageio_descriptor *desc, for (midx = 0; midx < desc->pg_mirror_count; midx++) { if (midx) { nfs_page_group_lock(req, false); nfs_page_group_lock(req); /* find the last request */ for (lastreq = req->wb_head; Loading fs/nfs/write.c +3 −3 Original line number Diff line number Diff line Loading @@ -271,7 +271,7 @@ static bool nfs_page_group_covers_page(struct nfs_page *req) unsigned int pos = 0; unsigned int len = nfs_page_length(req->wb_page); nfs_page_group_lock(req, false); nfs_page_group_lock(req); do { tmp = nfs_page_group_search_locked(req->wb_head, pos); Loading Loading @@ -480,7 +480,7 @@ nfs_lock_and_join_requests(struct page *page) } spin_unlock(&inode->i_lock); ret = nfs_page_group_lock(head, false); ret = nfs_page_group_lock(head); if (ret < 0) { nfs_unlock_and_release_request(head); return ERR_PTR(ret); Loading @@ -501,7 +501,7 @@ nfs_lock_and_join_requests(struct page *page) nfs_page_group_unlock(head); ret = nfs_wait_on_request(subreq); if (!ret) ret = nfs_page_group_lock(head, false); ret = nfs_page_group_lock(head); if (ret < 0) { nfs_unroll_locks(inode, head, subreq); nfs_release_request(subreq); Loading include/linux/nfs_page.h +1 −1 Original line number Diff line number Diff line Loading @@ -139,7 +139,7 @@ extern size_t nfs_generic_pg_test(struct nfs_pageio_descriptor *desc, extern int nfs_wait_on_request(struct nfs_page *); extern void nfs_unlock_request(struct nfs_page *req); extern void nfs_unlock_and_release_request(struct nfs_page *); extern int nfs_page_group_lock(struct nfs_page *, bool); extern int nfs_page_group_lock(struct nfs_page *); extern void nfs_page_group_unlock(struct nfs_page *); extern bool nfs_page_group_sync_on_bit(struct nfs_page *, unsigned int); extern bool nfs_async_iocounter_wait(struct rpc_task *, struct nfs_lock_context *); Loading Loading
fs/nfs/pagelist.c +11 −20 Original line number Diff line number Diff line Loading @@ -134,19 +134,14 @@ EXPORT_SYMBOL_GPL(nfs_async_iocounter_wait); /* * nfs_page_group_lock - lock the head of the page group * @req - request in group that is to be locked * @nonblock - if true don't block waiting for lock * * this lock must be held if modifying the page group list * this lock must be held when traversing or modifying the page * group list * * return 0 on success, < 0 on error: -EDELAY if nonblocking or the * result from wait_on_bit_lock * * NOTE: calling with nonblock=false should always have set the * lock bit (see fs/buffer.c and other uses of wait_on_bit_lock * with TASK_UNINTERRUPTIBLE), so there is no need to check the result. * return 0 on success, < 0 on error */ int nfs_page_group_lock(struct nfs_page *req, bool nonblock) nfs_page_group_lock(struct nfs_page *req) { struct nfs_page *head = req->wb_head; Loading @@ -155,16 +150,12 @@ nfs_page_group_lock(struct nfs_page *req, bool nonblock) if (!test_and_set_bit(PG_HEADLOCK, &head->wb_flags)) return 0; if (!nonblock) { set_bit(PG_CONTENDED1, &head->wb_flags); smp_mb__after_atomic(); return wait_on_bit_lock(&head->wb_flags, PG_HEADLOCK, TASK_UNINTERRUPTIBLE); } return -EAGAIN; } /* * nfs_page_group_unlock - unlock the head of the page group * @req - request in group that is to be unlocked Loading Loading @@ -225,7 +216,7 @@ bool nfs_page_group_sync_on_bit(struct nfs_page *req, unsigned int bit) { bool ret; nfs_page_group_lock(req, false); nfs_page_group_lock(req); ret = nfs_page_group_sync_on_bit_locked(req, bit); nfs_page_group_unlock(req); Loading Loading @@ -1016,7 +1007,7 @@ static int __nfs_pageio_add_request(struct nfs_pageio_descriptor *desc, unsigned int bytes_left = 0; unsigned int offset, pgbase; nfs_page_group_lock(req, false); nfs_page_group_lock(req); subreq = req; bytes_left = subreq->wb_bytes; Loading @@ -1038,7 +1029,7 @@ static int __nfs_pageio_add_request(struct nfs_pageio_descriptor *desc, if (mirror->pg_recoalesce) return 0; /* retry add_request for this subreq */ nfs_page_group_lock(req, false); nfs_page_group_lock(req); continue; } Loading Loading @@ -1135,7 +1126,7 @@ int nfs_pageio_add_request(struct nfs_pageio_descriptor *desc, for (midx = 0; midx < desc->pg_mirror_count; midx++) { if (midx) { nfs_page_group_lock(req, false); nfs_page_group_lock(req); /* find the last request */ for (lastreq = req->wb_head; Loading
fs/nfs/write.c +3 −3 Original line number Diff line number Diff line Loading @@ -271,7 +271,7 @@ static bool nfs_page_group_covers_page(struct nfs_page *req) unsigned int pos = 0; unsigned int len = nfs_page_length(req->wb_page); nfs_page_group_lock(req, false); nfs_page_group_lock(req); do { tmp = nfs_page_group_search_locked(req->wb_head, pos); Loading Loading @@ -480,7 +480,7 @@ nfs_lock_and_join_requests(struct page *page) } spin_unlock(&inode->i_lock); ret = nfs_page_group_lock(head, false); ret = nfs_page_group_lock(head); if (ret < 0) { nfs_unlock_and_release_request(head); return ERR_PTR(ret); Loading @@ -501,7 +501,7 @@ nfs_lock_and_join_requests(struct page *page) nfs_page_group_unlock(head); ret = nfs_wait_on_request(subreq); if (!ret) ret = nfs_page_group_lock(head, false); ret = nfs_page_group_lock(head); if (ret < 0) { nfs_unroll_locks(inode, head, subreq); nfs_release_request(subreq); Loading
include/linux/nfs_page.h +1 −1 Original line number Diff line number Diff line Loading @@ -139,7 +139,7 @@ extern size_t nfs_generic_pg_test(struct nfs_pageio_descriptor *desc, extern int nfs_wait_on_request(struct nfs_page *); extern void nfs_unlock_request(struct nfs_page *req); extern void nfs_unlock_and_release_request(struct nfs_page *); extern int nfs_page_group_lock(struct nfs_page *, bool); extern int nfs_page_group_lock(struct nfs_page *); extern void nfs_page_group_unlock(struct nfs_page *); extern bool nfs_page_group_sync_on_bit(struct nfs_page *, unsigned int); extern bool nfs_async_iocounter_wait(struct rpc_task *, struct nfs_lock_context *); Loading