dev.c (b2430d7567a376b3685627ca7e9d712f6f27d49b) dev.c (85f40aec887110ae6bbefa87988def4606a3d583)
1/*
2 FUSE: Filesystem in Userspace
3 Copyright (C) 2001-2008 Miklos Szeredi <miklos@szeredi.hu>
4
5 This program can be distributed under the terms of the GNU GPL.
6 See the file COPYING.
7*/
8

--- 889 unchanged lines hidden (view full) ---

898}
899
900/* Copy pages in the request to/from userspace buffer */
901static int fuse_copy_pages(struct fuse_copy_state *cs, unsigned nbytes,
902 int zeroing)
903{
904 unsigned i;
905 struct fuse_req *req = cs->req;
1/*
2 FUSE: Filesystem in Userspace
3 Copyright (C) 2001-2008 Miklos Szeredi <miklos@szeredi.hu>
4
5 This program can be distributed under the terms of the GNU GPL.
6 See the file COPYING.
7*/
8

--- 889 unchanged lines hidden (view full) ---

898}
899
900/* Copy pages in the request to/from userspace buffer */
901static int fuse_copy_pages(struct fuse_copy_state *cs, unsigned nbytes,
902 int zeroing)
903{
904 unsigned i;
905 struct fuse_req *req = cs->req;
906 unsigned offset = req->page_descs[0].offset;
907 unsigned count = min(nbytes, (unsigned) PAGE_SIZE - offset);
908
909 for (i = 0; i < req->num_pages && (nbytes || zeroing); i++) {
910 int err;
906
907 for (i = 0; i < req->num_pages && (nbytes || zeroing); i++) {
908 int err;
909 unsigned offset = req->page_descs[i].offset;
910 unsigned count = min(nbytes, req->page_descs[i].length);
911
912 err = fuse_copy_page(cs, &req->pages[i], offset, count,
913 zeroing);
914 if (err)
915 return err;
916
917 nbytes -= count;
911
912 err = fuse_copy_page(cs, &req->pages[i], offset, count,
913 zeroing);
914 if (err)
915 return err;
916
917 nbytes -= count;
918 count = min(nbytes, (unsigned) PAGE_SIZE);
919 offset = 0;
920 }
921 return 0;
922}
923
924/* Copy a single argument in the request to/from userspace buffer */
925static int fuse_copy_one(struct fuse_copy_state *cs, void *val, unsigned size)
926{
927 while (size) {

--- 693 unchanged lines hidden (view full) ---

1621 unsigned int this_num;
1622
1623 page = find_get_page(mapping, index);
1624 if (!page)
1625 break;
1626
1627 this_num = min_t(unsigned, num, PAGE_CACHE_SIZE - offset);
1628 req->pages[req->num_pages] = page;
918 }
919 return 0;
920}
921
922/* Copy a single argument in the request to/from userspace buffer */
923static int fuse_copy_one(struct fuse_copy_state *cs, void *val, unsigned size)
924{
925 while (size) {

--- 693 unchanged lines hidden (view full) ---

1619 unsigned int this_num;
1620
1621 page = find_get_page(mapping, index);
1622 if (!page)
1623 break;
1624
1625 this_num = min_t(unsigned, num, PAGE_CACHE_SIZE - offset);
1626 req->pages[req->num_pages] = page;
1627 req->page_descs[req->num_pages].length = this_num;
1629 req->num_pages++;
1630
1631 offset = 0;
1632 num -= this_num;
1633 total_len += this_num;
1634 index++;
1635 }
1636 req->misc.retrieve_in.offset = outarg->offset;

--- 517 unchanged lines hidden ---
1628 req->num_pages++;
1629
1630 offset = 0;
1631 num -= this_num;
1632 total_len += this_num;
1633 index++;
1634 }
1635 req->misc.retrieve_in.offset = outarg->offset;

--- 517 unchanged lines hidden ---