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 ---