Hi there, I wrote a dummy function to write to the reserved inode. This is as far as I got and I have a few questions: /**************************************************************/ void dummy_write_to_inode(struct inode *ino) { struct buffer_head *bh; handle_t *handle; int err, blk; char dummy_text[] = "The crazy fox jumps over the lazy dog!"; handle = ext3_start_journal(inode, 2); if (IS_ERR(handle)) goto err; /* allocate a block */ blk = ext3_new_block(handle, inode, 1, &err); if (err) goto err; EXT3_I(inode)->i_data[0] = blk /* write something to the block */ bh = sb_bread(ino->sb, blk); if (IS_ERR(bh)) goto err; memcpy(bh->b_data, dummy_text, sizeof(dummy_text)); mark_buffer_dirty(bh); brelse(bh); i_size_write(inode, sizeof(dummy_text)); mark_inode_dirty(inode); ext3_journal_stop(handle); err: /* ... error handling code ... */ } /**************************************************************/ For some reason, this code doesn't work as I expected. The block is actually written and at the end contains "The lazy fox jumps over the lazy dog". The problem is with the inode: it just gets partially updated. The block pointer to the first block is updated but the size stays zero. How is it possibile that half of the inode gets updated and the other half doesn't? What am I missing here? Thanks, Donato p.s.: I'd also like to know if there is a "smarter" way to write to an inode that automatically allocates blocks when needed and the like... -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ