int op_read (const char *path, char *buf, size_t size, off_t offset, struct fuse_file_info *fi) { __u64 pos; errcode_t rc; unsigned int bytes; ext2_file_t efile = EXT2FS_FILE(fi->fh); ext2_filsys e2fs = current_ext2fs(); debugf("enter"); debugf("path = %s", path); efile = do_open(e2fs, path, O_RDONLY); rc = ext2fs_file_llseek(efile, offset, SEEK_SET, &pos); if (rc) { do_release(efile); return -EINVAL; } rc = ext2fs_file_read(efile, buf, size, &bytes); if (rc) { do_release(efile); return -EIO; } do_release(efile); debugf("leave"); return bytes; }
int op_write (const char *path, const char *buf, size_t size, off_t offset, struct fuse_file_info *fi) { size_t rt; ext2_file_t efile = EXT2FS_FILE(fi->fh); debugf("enter"); debugf("path = %s", path); rt = do_write(efile, buf, size, offset); debugf("leave"); return rt; }
int op_write (const char *path, const char *buf, size_t size, off_t offset, struct fuse_file_info *fi) { size_t rt; ext2_file_t efile = EXT2FS_FILE(fi->fh); ext2_filsys e2fs = current_ext2fs(); debugf("enter"); debugf("path = %s", path); efile = do_open(e2fs, path, O_WRONLY); rt = do_write(efile, buf, size, offset); do_release(efile); debugf("leave"); return rt; }
int op_ftruncate(const char *path, off_t length, struct fuse_file_info *fi) { size_t rt; ext2_file_t efile = EXT2FS_FILE(fi->fh); debugf("enter"); debugf("path = %s", path); rt = ext2fs_file_set_size(efile, length); if (rt) { debugf("ext2fs_file_set_size(efile, %d); failed", length); return rt; } debugf("leave"); return 0; }