dir.c (473e0bc39bd5d2542e90edc622a65bd49206409d) | dir.c (0b936e37df8111ea727263a5a246b58e05b7aa1b) |
---|---|
1/* 2 * linux/fs/nfs/dir.c 3 * 4 * Copyright (C) 1992 Rick Sladkey 5 * 6 * nfs directory handling functions 7 * 8 * 10 Apr 1996 Added silly rename for unlink --okir --- 576 unchanged lines hidden (view full) --- 585static 586void nfs_readdir_free_pagearray(struct page **pages, unsigned int npages) 587{ 588 unsigned int i; 589 for (i = 0; i < npages; i++) 590 put_page(pages[i]); 591} 592 | 1/* 2 * linux/fs/nfs/dir.c 3 * 4 * Copyright (C) 1992 Rick Sladkey 5 * 6 * nfs directory handling functions 7 * 8 * 10 Apr 1996 Added silly rename for unlink --okir --- 576 unchanged lines hidden (view full) --- 585static 586void nfs_readdir_free_pagearray(struct page **pages, unsigned int npages) 587{ 588 unsigned int i; 589 for (i = 0; i < npages; i++) 590 put_page(pages[i]); 591} 592 |
593static 594void nfs_readdir_free_large_page(void *ptr, struct page **pages, 595 unsigned int npages) 596{ 597 nfs_readdir_free_pagearray(pages, npages); 598} 599 | |
600/* 601 * nfs_readdir_large_page will allocate pages that must be freed with a call | 593/* 594 * nfs_readdir_large_page will allocate pages that must be freed with a call |
602 * to nfs_readdir_free_large_page | 595 * to nfs_readdir_free_pagearray |
603 */ 604static 605int nfs_readdir_large_page(struct page **pages, unsigned int npages) 606{ 607 unsigned int i; 608 609 for (i = 0; i < npages; i++) { 610 struct page *page = alloc_page(GFP_KERNEL); --- 7 unchanged lines hidden (view full) --- 618 nfs_readdir_free_pagearray(pages, i); 619 return -ENOMEM; 620} 621 622static 623int nfs_readdir_xdr_to_array(nfs_readdir_descriptor_t *desc, struct page *page, struct inode *inode) 624{ 625 struct page *pages[NFS_MAX_READDIR_PAGES]; | 596 */ 597static 598int nfs_readdir_large_page(struct page **pages, unsigned int npages) 599{ 600 unsigned int i; 601 602 for (i = 0; i < npages; i++) { 603 struct page *page = alloc_page(GFP_KERNEL); --- 7 unchanged lines hidden (view full) --- 611 nfs_readdir_free_pagearray(pages, i); 612 return -ENOMEM; 613} 614 615static 616int nfs_readdir_xdr_to_array(nfs_readdir_descriptor_t *desc, struct page *page, struct inode *inode) 617{ 618 struct page *pages[NFS_MAX_READDIR_PAGES]; |
626 void *pages_ptr = NULL; | |
627 struct nfs_entry entry; 628 struct file *file = desc->file; 629 struct nfs_cache_array *array; 630 int status = -ENOMEM; 631 unsigned int array_size = ARRAY_SIZE(pages); 632 633 entry.prev_cookie = 0; 634 entry.cookie = desc->last_cookie; --- 31 unchanged lines hidden (view full) --- 666 status = nfs_readdir_page_filler(desc, &entry, pages, page, pglen); 667 if (status < 0) { 668 if (status == -ENOSPC) 669 status = 0; 670 break; 671 } 672 } while (array->eof_index < 0); 673 | 619 struct nfs_entry entry; 620 struct file *file = desc->file; 621 struct nfs_cache_array *array; 622 int status = -ENOMEM; 623 unsigned int array_size = ARRAY_SIZE(pages); 624 625 entry.prev_cookie = 0; 626 entry.cookie = desc->last_cookie; --- 31 unchanged lines hidden (view full) --- 658 status = nfs_readdir_page_filler(desc, &entry, pages, page, pglen); 659 if (status < 0) { 660 if (status == -ENOSPC) 661 status = 0; 662 break; 663 } 664 } while (array->eof_index < 0); 665 |
674 nfs_readdir_free_large_page(pages_ptr, pages, array_size); | 666 nfs_readdir_free_pagearray(pages, array_size); |
675out_release_array: 676 nfs_readdir_release_array(page); 677out_label_free: 678 nfs4_label_free(entry.label); 679out: 680 nfs_free_fattr(entry.fattr); 681 nfs_free_fhandle(entry.fh); 682 return status; --- 1835 unchanged lines hidden --- | 667out_release_array: 668 nfs_readdir_release_array(page); 669out_label_free: 670 nfs4_label_free(entry.label); 671out: 672 nfs_free_fattr(entry.fattr); 673 nfs_free_fhandle(entry.fh); 674 return status; --- 1835 unchanged lines hidden --- |