Overview
Comment: | Changed mount options to remove "direct_io", which breaks mmap and performed additional cleanups |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
1c47ca909719f71b553ec4026175767e |
User & Date: | rkeene on 2015-10-14 17:47:24 |
Other Links: | manifest | tags |
Context
2015-10-14
| ||
17:47 | Updated to be more careful about closing files check-in: b357796ad5 user: rkeene tags: trunk | |
17:47 | Changed mount options to remove "direct_io", which breaks mmap and performed additional cleanups check-in: 1c47ca9097 user: rkeene tags: trunk | |
2015-07-31
| ||
03:02 | Fixed inode lookup and determination of a file being packaged or not check-in: 1e2435553a user: rkeene tags: trunk | |
Changes
Modified appfsd.c from [647fdab61a] to [6b6df68529].
1 | /* | | | 1 2 3 4 5 6 7 8 9 | /* * Copyright (c) 2014, 2015 Roy Keene * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: |
︙ | ︙ | |||
530 531 532 533 534 535 536 | } return(ctx->uid); } /* * Determine the GID for the user making the current FUSE filesystem request. | < < | 530 531 532 533 534 535 536 537 538 539 540 541 542 543 | } return(ctx->uid); } /* * Determine the GID for the user making the current FUSE filesystem request. */ static gid_t appfs_get_fsgid(void) { struct fuse_context *ctx; if (!appfs_fuse_started) { return(getgid()); } |
︙ | ︙ | |||
1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 | APPFS_DEBUG("error: open failed"); return(errno * -1); } fi->fh = fh; return(0); } static int appfs_fuse_close(const char *path, struct fuse_file_info *fi) { int close_ret; appfs_get_path_info_cache_rm(path, appfs_get_fsuid()); | > > | 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 | APPFS_DEBUG("error: open failed"); return(errno * -1); } fi->fh = fh; APPFS_DEBUG("Opened \"%s\" (for \"%s\") with file descriptor %i", real_path, path, fh); return(0); } static int appfs_fuse_close(const char *path, struct fuse_file_info *fi) { int close_ret; appfs_get_path_info_cache_rm(path, appfs_get_fsuid()); |
︙ | ︙ | |||
1438 1439 1440 1441 1442 1443 1444 | return(0); } static int appfs_fuse_read(const char *path, char *buf, size_t size, off_t offset, struct fuse_file_info *fi) { ssize_t read_ret; int retval; | | | 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 | return(0); } static int appfs_fuse_read(const char *path, char *buf, size_t size, off_t offset, struct fuse_file_info *fi) { ssize_t read_ret; int retval; APPFS_DEBUG("Enter (path = %s, buf, size = %lli, offset = %lli, fd = %lli)", path, (long long) size, (long long) offset, (long long) fi->fh); retval = 0; while (size != 0) { read_ret = pread(fi->fh, buf, size, offset); if (read_ret < 0) { |
︙ | ︙ | |||
2024 2025 2026 2027 2028 2029 2030 | #else appfs_threaded_tcl = 0; #endif /** ** Add FUSE arguments which we always supply **/ | | | 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 | #else appfs_threaded_tcl = 0; #endif /** ** Add FUSE arguments which we always supply **/ fuse_opt_add_arg(args, "-odefault_permissions,fsname=appfs,subtype=appfsd,use_ino,entry_timeout=0,attr_timeout=0,big_writes,intr,hard_remove"); if (getuid() == 0) { fuse_opt_parse(args, NULL, NULL, NULL); fuse_opt_add_arg(args, "-oallow_other"); /* * This should generally be avoided, but if there are security |
︙ | ︙ | |||
2067 2068 2069 2070 2071 2072 2073 | APPFS_DEBUG("Passing option to FUSE: -s"); fuse_opt_parse(args, NULL, NULL, NULL); fuse_opt_add_arg(args, "-s"); appfs_threaded_tcl = 0; } else if (strcmp(optstr, "allow_other") == 0) { | | | 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 | APPFS_DEBUG("Passing option to FUSE: -s"); fuse_opt_parse(args, NULL, NULL, NULL); fuse_opt_add_arg(args, "-s"); appfs_threaded_tcl = 0; } else if (strcmp(optstr, "allow_other") == 0) { APPFS_DEBUG("Passing option to FUSE: -o allow_other"); fuse_opt_parse(args, NULL, NULL, NULL); fuse_opt_add_arg(args, "-oallow_other"); } else if (strcmp(optstr, "rw") == 0) { /* Ignored */ } else { fprintf(stderr, "appfsd: invalid option: \"-o %s\"\n", optstr); |
︙ | ︙ |