Lines Matching full:channel
75 static errcode_t unix_open(const char *name, int flags, io_channel *channel);
76 static errcode_t unix_close(io_channel channel);
77 static errcode_t unix_set_blksize(io_channel channel, int blksize);
78 static errcode_t unix_read_blk(io_channel channel, unsigned long block,
80 static errcode_t unix_write_blk(io_channel channel, unsigned long block,
82 static errcode_t unix_flush(io_channel channel);
83 static errcode_t unix_write_byte(io_channel channel, unsigned long offset,
85 static errcode_t unix_set_option(io_channel channel, const char *option,
88 static void reuse_cache(io_channel channel, struct unix_private_data *data,
122 static errcode_t raw_read_blk(io_channel channel,
132 size = (count < 0) ? -count : count * channel->block_size;
133 location = ((ext2_loff_t) block * channel->block_size) + data->offset;
149 if (channel->read_error)
150 retval = (channel->read_error)(channel, block, count, buf,
158 static errcode_t raw_read_blk(io_channel channel,
170 size = (count < 0) ? -count : count * channel->block_size;
171 location = ((ext2_loff_t) block * channel->block_size) + data->offset;
174 count, size, block, channel->block_size, (long long)location);
202 if (channel->read_error)
203 retval = (channel->read_error)(channel, block, count, buf,
209 static errcode_t raw_write_blk(io_channel channel,
220 size = channel->block_size;
225 size = count * channel->block_size;
228 location = ((ext2_loff_t) block * channel->block_size) + data->offset;
242 if (channel->write_error)
243 retval = (channel->write_error)(channel, block, count, buf,
254 static errcode_t alloc_cache(io_channel channel,
267 if ((retval = ext2fs_get_mem(channel->block_size,
328 static void reuse_cache(io_channel channel, struct unix_private_data *data,
332 raw_write_blk(channel, data, cache->block, 1, cache->buf);
343 static errcode_t flush_cached_blocks(io_channel channel,
363 retval = raw_write_blk(channel, data,
374 static errcode_t unix_open(const char *name, int flags, io_channel *channel)
461 *channel = io;
474 static errcode_t unix_close(io_channel channel)
479 EXT2_CHECK_MAGIC(channel, EXT2_ET_MAGIC_IO_CHANNEL);
480 data = (struct unix_private_data *) channel->private_data;
483 if (--channel->refcount > 0)
487 retval = flush_cached_blocks(channel, data, 0);
494 ext2fs_free_mem(&channel->private_data);
495 if (channel->name)
496 ext2fs_free_mem(&channel->name);
497 ext2fs_free_mem(&channel);
501 static errcode_t unix_set_blksize(io_channel channel, int blksize)
506 EXT2_CHECK_MAGIC(channel, EXT2_ET_MAGIC_IO_CHANNEL);
507 data = (struct unix_private_data *) channel->private_data;
510 if (channel->block_size != blksize) {
512 if ((retval = flush_cached_blocks(channel, data, 0)))
516 channel->block_size = blksize;
518 if ((retval = alloc_cache(channel, data)))
525 static errcode_t unix_read_blk(io_channel channel, unsigned long block,
534 EXT2_CHECK_MAGIC(channel, EXT2_ET_MAGIC_IO_CHANNEL);
535 data = (struct unix_private_data *) channel->private_data;
539 return raw_read_blk(channel, data, block, count, buf);
546 if ((retval = flush_cached_blocks(channel, data, 0)))
548 return raw_read_blk(channel, data, block, count, buf);
558 memcpy(cp, cache->buf, channel->block_size);
561 cp += channel->block_size;
574 if ((retval = raw_read_blk(channel, data, block, i, cp)))
581 reuse_cache(channel, data, cache, block++);
582 memcpy(cache->buf, cp, channel->block_size);
583 cp += channel->block_size;
590 static errcode_t unix_write_blk(io_channel channel, unsigned long block,
599 EXT2_CHECK_MAGIC(channel, EXT2_ET_MAGIC_IO_CHANNEL);
600 data = (struct unix_private_data *) channel->private_data;
604 return raw_write_blk(channel, data, block, count, buf);
611 if ((retval = flush_cached_blocks(channel, data, 1)))
613 return raw_write_blk(channel, data, block, count, buf);
621 writethrough = channel->flags & CHANNEL_FLAGS_WRITETHROUGH;
623 retval = raw_write_blk(channel, data, block, count, buf);
630 reuse_cache(channel, data, cache, block);
632 memcpy(cache->buf, cp, channel->block_size);
636 cp += channel->block_size;
642 static errcode_t unix_write_byte(io_channel channel, unsigned long offset,
649 EXT2_CHECK_MAGIC(channel, EXT2_ET_MAGIC_IO_CHANNEL);
650 data = (struct unix_private_data *) channel->private_data;
657 if ((retval = flush_cached_blocks(channel, data, 1)))
674 static errcode_t unix_flush(io_channel channel)
679 EXT2_CHECK_MAGIC(channel, EXT2_ET_MAGIC_IO_CHANNEL);
680 data = (struct unix_private_data *) channel->private_data;
684 retval = flush_cached_blocks(channel, data, 0);
690 static errcode_t unix_set_option(io_channel channel, const char *option,
697 EXT2_CHECK_MAGIC(channel, EXT2_ET_MAGIC_IO_CHANNEL);
698 data = (struct unix_private_data *) channel->private_data;