• Home
  • Raw
  • Download

Lines Matching refs:file

33 #define BMAP_BUFFER (file->buf + fs->blocksize)
39 ext2_file_t file; in ext2fs_file_open2() local
50 retval = ext2fs_get_mem(sizeof(struct ext2_file), &file); in ext2fs_file_open2()
54 memset(file, 0, sizeof(struct ext2_file)); in ext2fs_file_open2()
55 file->magic = EXT2_ET_MAGIC_EXT2_FILE; in ext2fs_file_open2()
56 file->fs = fs; in ext2fs_file_open2()
57 file->ino = ino; in ext2fs_file_open2()
58 file->flags = flags & EXT2_FILE_MASK; in ext2fs_file_open2()
61 memcpy(&file->inode, inode, sizeof(struct ext2_inode)); in ext2fs_file_open2()
63 retval = ext2fs_read_inode(fs, ino, &file->inode); in ext2fs_file_open2()
68 retval = ext2fs_get_array(3, fs->blocksize, &file->buf); in ext2fs_file_open2()
72 *ret = file; in ext2fs_file_open2()
76 if (file->buf) in ext2fs_file_open2()
77 ext2fs_free_mem(&file->buf); in ext2fs_file_open2()
78 ext2fs_free_mem(&file); in ext2fs_file_open2()
91 ext2_filsys ext2fs_file_get_fs(ext2_file_t file) in ext2fs_file_get_fs() argument
93 if (file->magic != EXT2_ET_MAGIC_EXT2_FILE) in ext2fs_file_get_fs()
95 return file->fs; in ext2fs_file_get_fs()
102 errcode_t ext2fs_file_flush(ext2_file_t file) in ext2fs_file_flush() argument
107 EXT2_CHECK_MAGIC(file, EXT2_ET_MAGIC_EXT2_FILE); in ext2fs_file_flush()
108 fs = file->fs; in ext2fs_file_flush()
110 if (!(file->flags & EXT2_FILE_BUF_VALID) || in ext2fs_file_flush()
111 !(file->flags & EXT2_FILE_BUF_DIRTY)) in ext2fs_file_flush()
118 if (!file->physblock) { in ext2fs_file_flush()
119 retval = ext2fs_bmap(fs, file->ino, &file->inode, in ext2fs_file_flush()
120 BMAP_BUFFER, file->ino ? BMAP_ALLOC : 0, in ext2fs_file_flush()
121 file->blockno, &file->physblock); in ext2fs_file_flush()
126 retval = io_channel_write_blk(fs->io, file->physblock, in ext2fs_file_flush()
127 1, file->buf); in ext2fs_file_flush()
131 file->flags &= ~EXT2_FILE_BUF_DIRTY; in ext2fs_file_flush()
140 static errcode_t sync_buffer_position(ext2_file_t file) in sync_buffer_position() argument
145 b = file->pos / file->fs->blocksize; in sync_buffer_position()
146 if (b != file->blockno) { in sync_buffer_position()
147 retval = ext2fs_file_flush(file); in sync_buffer_position()
150 file->flags &= ~EXT2_FILE_BUF_VALID; in sync_buffer_position()
152 file->blockno = b; in sync_buffer_position()
165 static errcode_t load_buffer(ext2_file_t file, int dontfill) in load_buffer() argument
167 ext2_filsys fs = file->fs; in load_buffer()
170 if (!(file->flags & EXT2_FILE_BUF_VALID)) { in load_buffer()
171 retval = ext2fs_bmap(fs, file->ino, &file->inode, in load_buffer()
172 BMAP_BUFFER, 0, file->blockno, in load_buffer()
173 &file->physblock); in load_buffer()
177 if (file->physblock) { in load_buffer()
179 file->physblock, in load_buffer()
180 1, file->buf); in load_buffer()
184 memset(file->buf, 0, fs->blocksize); in load_buffer()
186 file->flags |= EXT2_FILE_BUF_VALID; in load_buffer()
192 errcode_t ext2fs_file_close(ext2_file_t file) in ext2fs_file_close() argument
196 EXT2_CHECK_MAGIC(file, EXT2_ET_MAGIC_EXT2_FILE); in ext2fs_file_close()
198 retval = ext2fs_file_flush(file); in ext2fs_file_close()
200 if (file->buf) in ext2fs_file_close()
201 ext2fs_free_mem(&file->buf); in ext2fs_file_close()
202 ext2fs_free_mem(&file); in ext2fs_file_close()
208 errcode_t ext2fs_file_read(ext2_file_t file, void *buf, in ext2fs_file_read() argument
217 EXT2_CHECK_MAGIC(file, EXT2_ET_MAGIC_EXT2_FILE); in ext2fs_file_read()
218 fs = file->fs; in ext2fs_file_read()
220 while ((file->pos < EXT2_I_SIZE(&file->inode)) && (wanted > 0)) { in ext2fs_file_read()
221 retval = sync_buffer_position(file); in ext2fs_file_read()
224 retval = load_buffer(file, 0); in ext2fs_file_read()
228 start = file->pos % fs->blocksize; in ext2fs_file_read()
232 left = EXT2_I_SIZE(&file->inode) - file->pos ; in ext2fs_file_read()
236 memcpy(ptr, file->buf+start, c); in ext2fs_file_read()
237 file->pos += c; in ext2fs_file_read()
250 errcode_t ext2fs_file_write(ext2_file_t file, const void *buf, in ext2fs_file_write() argument
258 EXT2_CHECK_MAGIC(file, EXT2_ET_MAGIC_EXT2_FILE); in ext2fs_file_write()
259 fs = file->fs; in ext2fs_file_write()
261 if (!(file->flags & EXT2_FILE_WRITE)) in ext2fs_file_write()
265 retval = sync_buffer_position(file); in ext2fs_file_write()
269 start = file->pos % fs->blocksize; in ext2fs_file_write()
278 retval = load_buffer(file, (c == fs->blocksize)); in ext2fs_file_write()
282 file->flags |= EXT2_FILE_BUF_DIRTY; in ext2fs_file_write()
283 memcpy(file->buf+start, ptr, c); in ext2fs_file_write()
284 file->pos += c; in ext2fs_file_write()
296 errcode_t ext2fs_file_llseek(ext2_file_t file, __u64 offset, in ext2fs_file_llseek() argument
299 EXT2_CHECK_MAGIC(file, EXT2_ET_MAGIC_EXT2_FILE); in ext2fs_file_llseek()
302 file->pos = offset; in ext2fs_file_llseek()
304 file->pos += offset; in ext2fs_file_llseek()
306 file->pos = EXT2_I_SIZE(&file->inode) + offset; in ext2fs_file_llseek()
311 *ret_pos = file->pos; in ext2fs_file_llseek()
316 errcode_t ext2fs_file_lseek(ext2_file_t file, ext2_off_t offset, in ext2fs_file_lseek() argument
323 retval = ext2fs_file_llseek(file, loffset, whence, &ret_loffset); in ext2fs_file_lseek()
333 errcode_t ext2fs_file_get_lsize(ext2_file_t file, __u64 *ret_size) in ext2fs_file_get_lsize() argument
335 if (file->magic != EXT2_ET_MAGIC_EXT2_FILE) in ext2fs_file_get_lsize()
337 *ret_size = EXT2_I_SIZE(&file->inode); in ext2fs_file_get_lsize()
344 ext2_off_t ext2fs_file_get_size(ext2_file_t file) in ext2fs_file_get_size() argument
348 if (ext2fs_file_get_lsize(file, &size)) in ext2fs_file_get_size()
360 errcode_t ext2fs_file_set_size(ext2_file_t file, ext2_off_t size) in ext2fs_file_set_size() argument
363 EXT2_CHECK_MAGIC(file, EXT2_ET_MAGIC_EXT2_FILE); in ext2fs_file_set_size()
365 file->inode.i_size = size; in ext2fs_file_set_size()
366 file->inode.i_size_high = 0; in ext2fs_file_set_size()
367 if (file->ino) { in ext2fs_file_set_size()
368 retval = ext2fs_write_inode(file->fs, file->ino, &file->inode); in ext2fs_file_set_size()