Azat Khuzhin
dad5b1c50e
Initial support of journaling
...
- Reorder block numbers to make it more sequental for mkfs
- mkfs: adjust writing, to make it correct write journal blocks and ino too
- simplefs_iget: use fops for journal inode
- simplefs_iget: check sfs_inode->mode instead of i_mode (not initialized yet)
2014-10-02 02:20:37 +04:00
Azat Khuzhin
072ef5bff6
Add link to build environment (github.com/azat/simplefs-bld)
2014-09-23 15:13:51 +04:00
Azat Khuzhin
8567b0e113
simple-test: call umount from cleanup() only when mount point exists
...
this will avoid errors when cleanup() called before doing actuall job,
IOW just after make and before all tests.
2014-09-17 13:38:57 +04:00
Azat Khuzhin
0a7059cd35
simple-test: use 'umount -t /path/to/mnt' to avoid umounting extra mnts
2014-09-17 13:34:51 +04:00
Azat Khuzhin
37a08dbe63
simple-test: change dir to root before unmount, to avoid opened fds
2014-09-17 13:33:37 +04:00
Azat Khuzhin
0a41a032a4
simple-test: fix awk syntax for unmount only by fstype
...
But we could just use 'umount -t' I guess.
2014-09-17 13:32:39 +04:00
Azat Khuzhin
b84270ee83
simple-test: grep out by 3 column (fs type) from /proc/mounts
2014-09-16 20:18:59 +04:00
Azat Khuzhin
e1df255a33
simple-test: more accurate grep for /proc/mounts
2014-09-16 16:22:00 +04:00
Azat Khuzhin
0fb2c3b7c1
mkfs-simplefs: fill sb by zeros sb padding
...
This will make debugging more cleaner (you will see actual zeros instead
of trash)
2014-07-12 22:26:28 +04:00
Azat Khuzhin
7610120b10
mkfs: split into more helpers (and drop malloc just do seek instead)
2014-07-12 22:26:14 +04:00
Azat Khuzhin
bb70d76497
Add BUG_ON() after each sb_bread() to avoid NULL dereferencing
...
If mkfs-simple will have bugs, than it could obtain illegal block number, and
sb_bread() will return NULL, even without it could return NULL, so since this
fs is just for testing, simply add bug_on() to avoid going further.
[ 1247.861163] The magic number obtained in disk is: [268640275]
[ 1247.861165] simplefs filesystem of version [1] formatted with a block size of [4096] detected in the device.
[ 1247.861194] simplefs is succesfully mounted on [/dev/loop0]
[ 1247.886800] BUG: unable to handle kernel NULL pointer dereference at (null)
[ 1247.886804] IP: [<ffffffffa00ca695>] simplefs_lookup+0xb5/0x180 [simplefs]
[ 1247.886808] PGD 5eda6067 PUD 5eda5067 PMD 0
[ 1247.886810] Oops: 0000 [#1 ] SMP
[ 1247.886812] Modules linked in: simplefs(POE) snd_intel8x0 snd_ac97_codec ac97_bus snd_pcm snd_seq_midi snd_seq_midi_event snd_rawmidi snd_seq snd_seq_device intel_rapl snd_timer joydev snd rfcomm bnep bluetooth 6lowpan_iphc serio_raw i2c_piix4 mac_hid soundcore parport_pc ppdev lp parport hid_generic usbhid hid psmouse ahci libahci e1000 pata_acpi [last unloaded: simplefs]
[ 1247.886826] CPU: 0 PID: 9467 Comm: cat Tainted: P OE 3.15.0-6-generic #11-Ubuntu
[ 1247.886827] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
[ 1247.886828] task: ffff88005e72cb90 ti: ffff88005ede8000 task.ti: ffff88005ede8000
[ 1247.886829] RIP: 0010:[<ffffffffa00ca695>] [<ffffffffa00ca695>] simplefs_lookup+0xb5/0x180 [simplefs]
[ 1247.886832] RSP: 0018:ffff88005edebc88 EFLAGS: 00010292
[ 1247.886833] RAX: 0000000000000002 RBX: 0000000000000000 RCX: ffff88005f5370a0
[ 1247.886834] RDX: ffff880024c9a108 RSI: ffff880024c9bb60 RDI: ffff880024c9a000
[ 1247.886834] RBP: ffff88005edebcc0 R08: 0000000000000000 R09: 0000000000000001
[ 1247.886835] R10: ffff88005edebab8 R11: 0000000000000000 R12: ffff88005f537000
[ 1247.886836] R13: ffff88005ed68000 R14: 0000000000000000 R15: ffff880024c9a000
[ 1247.886837] FS: 00007ffb35497740(0000) GS:ffff880065c00000(0000) knlGS:0000000000000000
[ 1247.886838] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 1247.886839] CR2: 0000000000000000 CR3: 000000005edfa000 CR4: 00000000000006f0
[ 1247.886843] Stack:
[ 1247.886844] ffff880024c9bb60 ffff88001d19e180 ffff88001d19e180 0000000000008000
[ 1247.886845] ffff88005edebde8 ffff88001d159e40 ffff88005edebe40 ffff88005edebce0
[ 1247.886847] ffffffff811da5ed ffff88001d159e40 ffff88005edebf2c ffff88005edebd88
[ 1247.886848] Call Trace:
[ 1247.886853] [<ffffffff811da5ed>] lookup_real+0x1d/0x70
[ 1247.886856] [<ffffffff811df537>] do_last+0x797/0x1270
[ 1247.886860] [<ffffffff8132c81b>] ? apparmor_file_alloc_security+0x5b/0x180
[ 1247.886862] [<ffffffff812ed116>] ? security_file_alloc+0x16/0x20
[ 1247.886864] [<ffffffff811e119b>] path_openat+0xbb/0x6a0
[ 1247.886866] [<ffffffff811e285a>] do_filp_open+0x3a/0xa0
[ 1247.886868] [<ffffffff811ef597>] ? __alloc_fd+0xa7/0x130
[ 1247.886871] [<ffffffff811cff8a>] do_sys_open+0x12a/0x280
[ 1247.886874] [<ffffffff81020925>] ? syscall_trace_enter+0x165/0x2a0
[ 1247.886876] [<ffffffff811d00fe>] SyS_open+0x1e/0x20
[ 1247.886879] [<ffffffff8176e33f>] tracesys+0xe1/0xe6
[ 1247.886880] Code: 01 00 00 4c 89 e7 e8 ab fe ff ff 4c 89 e7 48 89 c3 e8 f0 38 12 e1 49 89 c7 49 8b 85 00 01 00 00 48 8b 34 24 4c 89 ff 49 89 47 40 <0f> b7 13 e8 83 0f 12 e1 41 0f b7 07 4d 89 67 28 49 c7 47 20 40
[ 1247.886894] RIP [<ffffffffa00ca695>] simplefs_lookup+0xb5/0x180 [simplefs]
[ 1247.886896] RSP <ffff88005edebc88>
[ 1247.886896] CR2: 0000000000000000
[ 1247.886898] ---[ end trace 89702ff0fda32679 ]---
2014-07-12 22:21:49 +04:00
Sankar சங்கர்
069f34ebbc
Merge pull request #3 from asfdfdfd/patch-1
...
Typo in comment fixed.
2014-03-29 21:15:55 +05:30
asfdfdfd
ed7ff8a42d
Typo in comment fixed.
2014-03-29 16:08:08 +03:00
Azat Khuzhin
3050cdf2ed
Use slab allocator for simplefs_inode
...
Struct simplefs_inode allocation is quite frequently (for fs), so it
will be better to use slab allocator instead of page allocator.
2013-09-30 22:46:56 +04:00
Azat Khuzhin
031f974c36
fix another inode leaking in simplefs_create_fs_object()
...
There we iterate over inodes using simplefs_get_inode(), while instead
we already have last inode number, just use it instead, and increment
some paddings to it (start inode, reserved inodes).
And form after this patch kedr shows that there is no leaks.
(but we must recheck it in the future.)
2013-09-30 02:34:05 +04:00
Azat Khuzhin
98bbe99632
Fix leaking of inode memory.
...
Release bh in simplefs_get_inode() and use kmalloc() instead, and also
add super_operations.destory_inode handler, to free allocated memory.
This is not optimal and it must be replaced by slab allocators.
2013-09-30 02:13:24 +04:00
Azat Khuzhin
7130573869
read: drop static "done" variable, we already have file_size in inode.
2013-09-29 20:22:03 +04:00
Azat Khuzhin
d976c4f65e
test: read file after truncate it to more smaller size.
...
Just write less bytes.
2013-09-29 20:18:49 +04:00
Azat Khuzhin
d67a2974e5
test: add some read operations after unmount/mount
2013-09-29 20:12:51 +04:00
Azat Khuzhin
86d7a8ff80
Add new helper - simplefs_inode_save()
...
And use it next functions:
- simplefs_write()
- simplefs_create_fs_object()
2013-09-29 20:01:35 +04:00
Azat Khuzhin
2d95ccf1a3
Start implementing verbose logging depends on macros. (SIMPLEFS_DEBUG)
...
In many cases we don't need such verbose loggin, just add macros to
print loggin only if SIMPLEFS_DEBUG isset.
And it will be installed by default. (in Makefile)
2013-09-29 18:09:44 +04:00
Azat Khuzhin
f9aa71628d
Add new helper simplefs_inode_search()
2013-09-29 16:41:48 +04:00
Azat Khuzhin
c199cecbce
simplefs_create_fs_object(): release mutexes when we can't acquire sb_lock
...
We need more pretty code for this.
2013-09-25 18:09:01 +04:00
Azat Khuzhin
ee1efa11df
sb: use s_maxbytes field instead of hardcoded check in simplefs_write()
...
generic_write_checks() will do this for us now, using s_maxbytes field
from sb.
2013-09-25 15:41:39 +04:00
Azat Khuzhin
ab68a5176a
simplefs_write(): use generic_write_checks()
2013-09-25 15:36:01 +04:00
Azat Khuzhin
274a98ae14
Add TODO about moving version depend code into separate header.
2013-09-25 00:48:31 +04:00
Azat Khuzhin
f72fbd4db6
Add new const SIMPLEFS_START_INO instead of magic number
2013-09-18 23:43:50 +04:00
Azat Khuzhin
f61cf26333
simple.h: drop trailing whitespaces
2013-09-18 23:43:17 +04:00
Azat Khuzhin
82a2041957
simplefs_create_fs_object(): avoid extra allocation of memory
...
We can just use already existed bh->b_data for this, and copy filename
and inode number directly to it.
2013-09-18 23:17:42 +04:00
Azat Khuzhin
0e14ca0edc
simplefs_fill_super() drop deprecated FIXME (see 9aee1ce)
2013-09-18 23:07:11 +04:00
Azat Khuzhin
569e7cd0ce
mkfs: avoid leaking of "block_padding"
2013-09-18 23:00:34 +04:00
Azat Khuzhin
1a11834f73
Add shell script to do some simple operations with simplefs
...
- create fs
- create files in it
- create dirs in it
- read files in it
- write files in it
2013-09-17 23:07:13 +04:00
Azat Khuzhin
3cae84d822
Drop explicit cast sb_bread() return value to buffer_head
...
Since sb_bread() already have such a return value.
2013-09-16 02:31:13 +04:00
Azat Khuzhin
9aee1ce302
Release bh in simplefs_fill_super()
2013-09-16 02:28:46 +04:00
Azat Khuzhin
90ca0e557c
Add FS_REQUIRES_DEV to fs_flags
2013-09-16 02:13:52 +04:00
Azat Khuzhin
23d554cda7
Use kill_block_super() in simplefs_kill_superblock()
2013-09-16 02:12:45 +04:00
Azat Khuzhin
8382ab7e81
simple.c: drop trailing whitespace
2013-09-16 02:10:49 +04:00
Azat Khuzhin
6d606a796c
simplefs_create_fs_object: fix memory leaking of temporary record
2013-09-14 13:48:15 +04:00
Azat Khuzhin
a315571b05
Use d_alloc_root() instead of d_make_root() in linux kernel < 3.3
...
d_alloc_root() is gone in 32991ab305ace7017c62f8eecbe5eb36dc32e13b.
Link: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=32991ab305ace7017c62f8eecbe5eb36dc32e13b
2013-09-10 23:45:45 +04:00
Azat Khuzhin
18df3131a2
Don't change filp->f_pos in fops->iterate. (linux kernel >= 3.11)
...
iterate_dir() already change filp->f_pos (using ctx->f_pos).
Thanks to Ivan.
Discussion: 3f472cec01 (commitcomment-4057234)
2013-09-10 22:21:59 +04:00
Sankar சங்கர்
83cf8c8906
Update README
2013-08-15 14:51:20 +05:30
Sankar சங்கர்
2be71baea4
Merge pull request #2 from azat/fix-includes
...
Use "" instead of <> to include files from simplefs
2013-08-15 02:15:47 -07:00
Sankar சங்கர்
3f472cec01
Merge pull request #1 from azat/readdir-to-iterate
...
Implement file_operations.iterate instead of deprecated readdir
2013-08-15 02:14:53 -07:00
Azat Khuzhin
b42b87a9bc
Implement file_operations.iterate instead of deprecated readdir
...
In newer version of kernel, since 3.11, readdir was dropped and the
replacment is iterate.
2013-08-15 01:08:56 +04:00
Azat Khuzhin
000b97517f
Use "" instead of <> to include files from simplefs
2013-08-15 00:58:44 +04:00
Sankar சங்கர்
0d484e8e3b
Update README for the 1.0 release
1.0
2013-08-06 21:15:01 +05:30
Sankar சங்கர்
46c5efbd1e
Update README with test instructions covering all supported filesystem operations
2013-08-05 22:47:32 +05:30
Sankar சங்கர்
7e6b073449
Update parent directory inode children count on new file/subdir creation.
2013-08-05 22:46:19 +05:30
Sankar சங்கர்
bcd9210b10
Update CREDITS
2013-07-28 22:48:11 +05:30
Sankar சங்கர்
39b8ce10aa
Update README with TODO and test instructions
2013-07-28 22:44:10 +05:30