* [PATCH 0/4] pnfs-submit code removal patches @ 2010-07-08 19:25 Fred Isaman 2010-07-08 19:25 ` [PATCH 1/4] pnfs-submit: Rely on full-file layout assumption to clean out some code Fred Isaman 2010-07-12 15:46 ` [PATCH 0/4] pnfs-submit code removal patches Benny Halevy 0 siblings, 2 replies; 6+ messages in thread From: Fred Isaman @ 2010-07-08 19:25 UTC (permalink / raw) To: linux-nfs All these patches should be immediately reverted in the post-submit branch. The first three take advantage of the fact that we are only using full-file layouts to remove some code. The fourth is a repeat of a previously sent patch that seems to have fallen throught the the cracks. Fred ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/4] pnfs-submit: Rely on full-file layout assumption to clean out some code 2010-07-08 19:25 [PATCH 0/4] pnfs-submit code removal patches Fred Isaman @ 2010-07-08 19:25 ` Fred Isaman 2010-07-08 19:25 ` [PATCH 2/4] pnfs-submit: Remove readahead_range Fred Isaman 2010-07-12 15:46 ` [PATCH 0/4] pnfs-submit code removal patches Benny Halevy 1 sibling, 1 reply; 6+ messages in thread From: Fred Isaman @ 2010-07-08 19:25 UTC (permalink / raw) To: linux-nfs Note that even assuming full file layout, there can still be two lsegs, one for each iomode. Signed-off-by: Fred Isaman <iisaman@netapp.com> --- fs/nfs/pnfs.c | 85 +------------------------------------------------------- 1 files changed, 2 insertions(+), 83 deletions(-) diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c index baa3de7..5b0c4ec 100644 --- a/fs/nfs/pnfs.c +++ b/fs/nfs/pnfs.c @@ -444,65 +444,6 @@ put_lseg(struct pnfs_layout_segment *lseg) } EXPORT_SYMBOL(put_lseg); -static inline u64 -end_offset(u64 start, u64 len) -{ - u64 end; - - end = start + len; - return end >= start ? end: NFS4_MAX_UINT64; -} - -/* last octet in a range */ -static inline u64 -last_byte_offset(u64 start, u64 len) -{ - u64 end; - - BUG_ON(!len); - end = start + len; - return end > start ? end - 1: NFS4_MAX_UINT64; -} - -/* - * is l2 fully contained in l1? - * start1 end1 - * [----------------------------------) - * start2 end2 - * [----------------) - */ -static inline int -lo_seg_contained(struct nfs4_pnfs_layout_segment *l1, - struct nfs4_pnfs_layout_segment *l2) -{ - u64 start1 = l1->offset; - u64 end1 = end_offset(start1, l1->length); - u64 start2 = l2->offset; - u64 end2 = end_offset(start2, l2->length); - - return (start1 <= start2) && (end1 >= end2); -} - -/* - * is l1 and l2 intersecting? - * start1 end1 - * [----------------------------------) - * start2 end2 - * [----------------) - */ -static inline int -lo_seg_intersecting(struct nfs4_pnfs_layout_segment *l1, - struct nfs4_pnfs_layout_segment *l2) -{ - u64 start1 = l1->offset; - u64 end1 = end_offset(start1, l1->length); - u64 start2 = l2->offset; - u64 end2 = end_offset(start2, l2->length); - - return (end1 == NFS4_MAX_UINT64 || end1 > start2) && - (end2 == NFS4_MAX_UINT64 || end2 > start1); -} - void pnfs_set_layout_stateid(struct pnfs_layout_type *lo, const nfs4_stateid *stateid) @@ -616,8 +557,7 @@ should_free_lseg(struct pnfs_layout_segment *lseg, struct nfs4_pnfs_layout_segment *range) { return (range->iomode == IOMODE_ANY || - lseg->range.iomode == range->iomode) && - lo_seg_intersecting(&lseg->range, range); + lseg->range.iomode == range->iomode); } static struct pnfs_layout_segment * @@ -832,18 +772,6 @@ static inline s64 cmp_layout(struct nfs4_pnfs_layout_segment *l1, struct nfs4_pnfs_layout_segment *l2) { - s64 d; - - /* higher offset > lower offset */ - d = l1->offset - l2->offset; - if (d) - return d; - - /* longer length > shorter length */ - d = l1->length - l2->length; - if (d) - return d; - /* read > read/write */ return (int)(l1->iomode == IOMODE_READ) - (int)(l2->iomode == IOMODE_READ); @@ -1004,16 +932,7 @@ static inline int has_matching_lseg(struct pnfs_layout_segment *lseg, struct nfs4_pnfs_layout_segment *range) { - struct nfs4_pnfs_layout_segment range1; - - if ((range->iomode == IOMODE_RW && lseg->range.iomode != IOMODE_RW) || - !lo_seg_intersecting(&lseg->range, range)) - return 0; - - /* range1 covers only the first byte in the range */ - range1 = *range; - range1.length = 1; - return lo_seg_contained(&lseg->range, &range1); + return (range->iomode != IOMODE_RW || lseg->range.iomode == IOMODE_RW); } /* -- 1.6.6.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/4] pnfs-submit: Remove readahead_range 2010-07-08 19:25 ` [PATCH 1/4] pnfs-submit: Rely on full-file layout assumption to clean out some code Fred Isaman @ 2010-07-08 19:25 ` Fred Isaman 2010-07-08 19:25 ` [PATCH 3/4] pnfs-submit: Remove offset and count arguments from pnfs_update_layout Fred Isaman 0 siblings, 1 reply; 6+ messages in thread From: Fred Isaman @ 2010-07-08 19:25 UTC (permalink / raw) To: linux-nfs This is not needed if we always use full file layout. Signed-off-by: Fred Isaman <iisaman@netapp.com> --- fs/nfs/pnfs.c | 47 +++++++---------------------------------------- 1 files changed, 7 insertions(+), 40 deletions(-) diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c index 5b0c4ec..a3b934d 100644 --- a/fs/nfs/pnfs.c +++ b/fs/nfs/pnfs.c @@ -1196,32 +1196,6 @@ out: } void -readahead_range(struct inode *inode, struct list_head *pages, loff_t *offset, - size_t *count) -{ - struct page *first, *last; - loff_t foff, i_size = i_size_read(inode); - pgoff_t end_index = (i_size - 1) >> PAGE_CACHE_SHIFT; - size_t range; - - - first = list_entry((pages)->prev, struct page, lru); - last = list_entry((pages)->next, struct page, lru); - - foff = (loff_t)first->index << PAGE_CACHE_SHIFT; - - range = (last->index - first->index) * PAGE_CACHE_SIZE; - if (last->index == end_index) - range += ((i_size - 1) & ~PAGE_CACHE_MASK) + 1; - else - range += PAGE_CACHE_SIZE; - dprintk("%s foff %lu, range %Zu\n", __func__, (unsigned long)foff, - range); - *offset = foff; - *count = range; -} - -void pnfs_set_pg_test(struct inode *inode, struct nfs_pageio_descriptor *pgio) { struct pnfs_layout_type *laytype; @@ -1280,8 +1254,6 @@ pnfs_pageio_init_read(struct nfs_pageio_descriptor *pgio, struct list_head *pages) { struct nfs_server *nfss = NFS_SERVER(inode); - size_t count = 0; - loff_t loff; pgio->pg_iswrite = 0; pgio->pg_boundary = 0; @@ -1291,19 +1263,14 @@ pnfs_pageio_init_read(struct nfs_pageio_descriptor *pgio, if (!pnfs_enabled_sb(nfss)) return; - /* Calculate the total read-ahead count */ - readahead_range(inode, pages, &loff, &count); - - if (count > 0) { - _pnfs_update_layout(inode, ctx, loff, count, IOMODE_READ, - &pgio->pg_lseg); - if (!pgio->pg_lseg) - return; + _pnfs_update_layout(inode, ctx, 0, NFS4_MAX_UINT64, IOMODE_READ, + &pgio->pg_lseg); + if (!pgio->pg_lseg) + return; - pgio->pg_boundary = pnfs_getboundary(inode); - if (pgio->pg_boundary) - pnfs_set_pg_test(inode, pgio); - } + pgio->pg_boundary = pnfs_getboundary(inode); + if (pgio->pg_boundary) + pnfs_set_pg_test(inode, pgio); } void -- 1.6.6.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/4] pnfs-submit: Remove offset and count arguments from pnfs_update_layout 2010-07-08 19:25 ` [PATCH 2/4] pnfs-submit: Remove readahead_range Fred Isaman @ 2010-07-08 19:25 ` Fred Isaman 2010-07-08 19:25 ` [PATCH 4/4] pnfs-submit: Remove unused encode_getattr_three code Fred Isaman 0 siblings, 1 reply; 6+ messages in thread From: Fred Isaman @ 2010-07-08 19:25 UTC (permalink / raw) To: linux-nfs They are not needed since we only use whole file layouts. Signed-off-by: Fred Isaman <iisaman@netapp.com> --- fs/nfs/file.c | 2 +- fs/nfs/pnfs.c | 5 +---- fs/nfs/pnfs.h | 8 ++++---- fs/nfs/read.c | 2 +- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/fs/nfs/file.c b/fs/nfs/file.c index 3066141..d86d74f 100644 --- a/fs/nfs/file.c +++ b/fs/nfs/file.c @@ -399,7 +399,7 @@ static int nfs_write_begin(struct file *file, struct address_space *mapping, pnfs_update_layout(mapping->host, nfs_file_open_context(file), - 0, NFS4_MAX_UINT64, IOMODE_RW, + IOMODE_RW, &lseg); start: /* diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c index a3b934d..9f37cb9 100644 --- a/fs/nfs/pnfs.c +++ b/fs/nfs/pnfs.c @@ -976,8 +976,6 @@ pnfs_has_layout(struct pnfs_layout_type *lo, void _pnfs_update_layout(struct inode *ino, struct nfs_open_context *ctx, - loff_t pos, - u64 count, enum pnfs_iomode iomode, struct pnfs_layout_segment **lsegpp) { @@ -1263,8 +1261,7 @@ pnfs_pageio_init_read(struct nfs_pageio_descriptor *pgio, if (!pnfs_enabled_sb(nfss)) return; - _pnfs_update_layout(inode, ctx, 0, NFS4_MAX_UINT64, IOMODE_READ, - &pgio->pg_lseg); + _pnfs_update_layout(inode, ctx, IOMODE_READ, &pgio->pg_lseg); if (!pgio->pg_lseg) return; diff --git a/fs/nfs/pnfs.h b/fs/nfs/pnfs.h index c60eff6..507b9ee 100644 --- a/fs/nfs/pnfs.h +++ b/fs/nfs/pnfs.h @@ -34,7 +34,7 @@ extern const nfs4_stateid zero_stateid; void put_lseg(struct pnfs_layout_segment *lseg); void _pnfs_update_layout(struct inode *ino, struct nfs_open_context *ctx, - loff_t pos, u64 count, enum pnfs_iomode access_type, + enum pnfs_iomode access_type, struct pnfs_layout_segment **lsegpp); int _pnfs_return_layout(struct inode *, struct nfs4_pnfs_layout_segment *, @@ -175,13 +175,13 @@ static inline int pnfs_return_layout(struct inode *ino, static inline void pnfs_update_layout(struct inode *ino, struct nfs_open_context *ctx, - loff_t pos, u64 count, enum pnfs_iomode access_type, + enum pnfs_iomode access_type, struct pnfs_layout_segment **lsegpp) { struct nfs_server *nfss = NFS_SERVER(ino); if (pnfs_enabled_sb(nfss)) - _pnfs_update_layout(ino, ctx, pos, count, access_type, lsegpp); + _pnfs_update_layout(ino, ctx, access_type, lsegpp); else { if (lsegpp) *lsegpp = NULL; @@ -200,7 +200,7 @@ static inline void put_lseg(struct pnfs_layout_segment *lseg) static inline void pnfs_update_layout(struct inode *ino, struct nfs_open_context *ctx, - loff_t pos, u64 count, enum pnfs_iomode access_type, + enum pnfs_iomode access_type, struct pnfs_layout_segment **lsegpp) { if (lsegpp) diff --git a/fs/nfs/read.c b/fs/nfs/read.c index 5a6258e..3fb3663 100644 --- a/fs/nfs/read.c +++ b/fs/nfs/read.c @@ -126,7 +126,7 @@ int nfs_readpage_async(struct nfs_open_context *ctx, struct inode *inode, len = nfs_page_length(page); if (len == 0) return nfs_return_empty_page(page); - pnfs_update_layout(inode, ctx, 0, NFS4_MAX_UINT64, IOMODE_READ, &lseg); + pnfs_update_layout(inode, ctx, IOMODE_READ, &lseg); new = nfs_create_request(ctx, inode, page, 0, len, lseg); put_lseg(lseg); if (IS_ERR(new)) { -- 1.6.6.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 4/4] pnfs-submit: Remove unused encode_getattr_three code 2010-07-08 19:25 ` [PATCH 3/4] pnfs-submit: Remove offset and count arguments from pnfs_update_layout Fred Isaman @ 2010-07-08 19:25 ` Fred Isaman 0 siblings, 0 replies; 6+ messages in thread From: Fred Isaman @ 2010-07-08 19:25 UTC (permalink / raw) To: linux-nfs This is not used by file layout Signed-off-by: Fred Isaman <iisaman@netapp.com> --- fs/nfs/nfs4xdr.c | 29 ----------------------------- 1 files changed, 0 insertions(+), 29 deletions(-) diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c index befda6f..273d154 100644 --- a/fs/nfs/nfs4xdr.c +++ b/fs/nfs/nfs4xdr.c @@ -1060,35 +1060,6 @@ static void encode_getattr_two(struct xdr_stream *xdr, uint32_t bm0, uint32_t bm hdr->replen += decode_getattr_maxsz; } -static void -encode_getattr_three(struct xdr_stream *xdr, - uint32_t bm0, uint32_t bm1, uint32_t bm2, - struct compound_hdr *hdr) -{ - __be32 *p; - - p = reserve_space(xdr, 4); - *p = cpu_to_be32(OP_GETATTR); - if (bm2) { - p = reserve_space(xdr, 16); - *p++ = cpu_to_be32(3); - *p++ = cpu_to_be32(bm0); - *p++ = cpu_to_be32(bm1); - *p = cpu_to_be32(bm2); - } else if (bm1) { - p = reserve_space(xdr, 12); - *p++ = cpu_to_be32(2); - *p++ = cpu_to_be32(bm0); - *p = cpu_to_be32(bm1); - } else { - p = reserve_space(xdr, 8); - *p++ = cpu_to_be32(1); - *p = cpu_to_be32(bm0); - } - hdr->nops++; - hdr->replen += decode_getattr_maxsz; -} - static void encode_getfattr(struct xdr_stream *xdr, const u32* bitmask, struct compound_hdr *hdr) { encode_getattr_two(xdr, bitmask[0] & nfs4_fattr_bitmap[0], -- 1.6.6.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 0/4] pnfs-submit code removal patches 2010-07-08 19:25 [PATCH 0/4] pnfs-submit code removal patches Fred Isaman 2010-07-08 19:25 ` [PATCH 1/4] pnfs-submit: Rely on full-file layout assumption to clean out some code Fred Isaman @ 2010-07-12 15:46 ` Benny Halevy 1 sibling, 0 replies; 6+ messages in thread From: Benny Halevy @ 2010-07-12 15:46 UTC (permalink / raw) To: Fred Isaman; +Cc: linux-nfs On Jul. 08, 2010, 22:25 +0300, Fred Isaman <iisaman@netapp.com> wrote: > All these patches should be immediately reverted in the post-submit branch. > > The first three take advantage of the fact that we are only using > full-file layouts to remove some code. > > The fourth is a repeat of a previously sent patch that seems to have > fallen throught the the cracks. Hmm, it looks like I had a pilot error on this one. Will fix. Benny > > Fred > > -- > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-07-12 15:46 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-07-08 19:25 [PATCH 0/4] pnfs-submit code removal patches Fred Isaman 2010-07-08 19:25 ` [PATCH 1/4] pnfs-submit: Rely on full-file layout assumption to clean out some code Fred Isaman 2010-07-08 19:25 ` [PATCH 2/4] pnfs-submit: Remove readahead_range Fred Isaman 2010-07-08 19:25 ` [PATCH 3/4] pnfs-submit: Remove offset and count arguments from pnfs_update_layout Fred Isaman 2010-07-08 19:25 ` [PATCH 4/4] pnfs-submit: Remove unused encode_getattr_three code Fred Isaman 2010-07-12 15:46 ` [PATCH 0/4] pnfs-submit code removal patches Benny Halevy
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).