* [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 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.