Skip to content

Commit 3f3d7fe

Browse files
committed
docs: update example
1 parent 20d6e01 commit 3f3d7fe

File tree

4 files changed

+57
-55
lines changed

4 files changed

+57
-55
lines changed

README.md

Lines changed: 34 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ cargo run ./foo/
5050

5151

5252

53-
# how to use (old interface in dev branch)
53+
# how to use
5454

5555
## impl BlockDevice Trait
5656

@@ -99,88 +99,69 @@ let ext4 = Ext4::open(disk);
9999

100100
### read regular file
101101
```rust
102-
let path = "/test_files/1.txt";
103-
let mut ext4_file = Ext4File::new();
104-
let r = ext4.ext4_open(&mut ext4_file, path, "r+", false);
105-
assert!(r.is_ok(), "open file error {:?}", r.err());
106-
107-
let mut read_buf = vec![0u8; 0x20000000];
108-
let mut read_cnt = 0;
109-
let r = ext4.ext4_file_read(&mut ext4_file, &mut read_buf, 0x20000000, &mut read_cnt);
110-
assert!(r.is_ok(), "open file error {:?}", r.err());
102+
let path = "test_files/0.txt";
103+
let mut read_buf = vec![0u8; READ_SIZE as usize];
104+
let child_inode = ext4.generic_open(path, &mut 2, false, 0, &mut 0).unwrap();
105+
// 1G
106+
let mut data = vec![0u8; 0x100000 * 1024 as usize];
107+
let read_data = ext4.read_at(child_inode, 0 as usize, &mut data);
108+
log::info!("read data {:?}", &data[..10]);
111109
```
112110

113111
### read link
114112
```rust
115-
log::info!("----read link file----");
116-
let path = "/test_files/linktest";
117-
let mut ext4_file = Ext4File::new();
118-
let r = ext4.ext4_open(&mut ext4_file, path, "r+", false);
119-
assert!(r.is_ok(), "open link error {:?}", r.err());
120-
121-
let mut read_buf = vec![0u8; 0x1000];
122-
let mut read_cnt = 0;
123-
let r = ext4.ext4_file_read(&mut ext4_file, &mut read_buf, 0x1000, &mut read_cnt);
124-
assert!(r.is_ok(), "read link error {:?}", r.err());
125-
log::info!("read data sample {:x?}", &read_buf[0..10]);
113+
let path = "test_files/linktest";
114+
let mut read_buf = vec![0u8; READ_SIZE as usize];
115+
// 2 is root inode
116+
let child_inode = ext4.generic_open(path, &mut 2, false, 0, &mut 0).unwrap();
117+
let mut data = vec![0u8; 0x100000 * 1024 as usize];
118+
let read_data = ext4.read_at(child_inode, 0 as usize, &mut data);
119+
log::info!("read data {:?}", &data[..10]);
126120
```
127121

128122
### mkdir
129-
```rust
123+
```rust
130124
for i in 0..10 {
131125
let path = format!("dirtest{}", i);
132126
let path = path.as_str();
133-
let r = ext4.ext4_dir_mk(&path);
127+
let r = ext4.dir_mk(&path);
134128
assert!(r.is_ok(), "dir make error {:?}", r.err());
135129
}
130+
let path = "dir1/dir2/dir3/dir4/dir5/dir6";
131+
let r = ext4.dir_mk(&path);
132+
assert!(r.is_ok(), "dir make error {:?}", r.err());
136133
```
137134

138135
### file write test
139136
```rust
140-
const WRITE_SIZE: usize = 0x400000;
141-
let path = format!("dirtest{}/write_{}.txt", i, i);
142-
let path = path.as_str();
143-
let mut ext4_file = Ext4File::new();
144-
let r = ext4.ext4_open(&mut ext4_file, path, "w+", true);
145-
assert!(r.is_ok(), "open file error {:?}", r.err());
146-
147-
let write_data = vec![0x41 + i as u8; WRITE_SIZE];
148-
ext4.ext4_file_write(&mut ext4_file, &write_data, WRITE_SIZE);
149-
150-
// test
151-
let r = ext4.ext4_open(&mut ext4_file, path, "r+", false);
152-
assert!(r.is_ok(), "open file error {:?}", r.err());
153-
154-
let mut read_buf = vec![0u8; WRITE_SIZE];
155-
let mut read_cnt = 0;
156-
let r = ext4.ext4_file_read(&mut ext4_file, &mut read_buf, WRITE_SIZE, &mut read_cnt);
157-
assert!(r.is_ok(), "open file error {:?}", r.err());
158-
assert_eq!(write_data, read_buf);
137+
// file create/write
138+
let inode_mode = InodeFileType::S_IFREG.bits();
139+
let inode_ref = ext4.create(ROOT_INODE, "511M.txt", inode_mode).unwrap();
140+
141+
// test 511M for 512M we need split the extent tree
142+
const WRITE_SIZE: usize = (0x100000 * 511);
143+
let write_buf = vec![0x41 as u8; WRITE_SIZE];
144+
let r = ext4.write_at(inode_ref.inode_num, 0, &write_buf);
159145
```
160146

161147

162148
### ls
163149
```rust
164-
let path = "test_files";
165-
let mut ext4_file = Ext4File::new();
166-
let r = ext4.ext4_open(&mut ext4_file, path, "r+", false);
167-
assert!(r.is_ok(), "open link error {:?}", r.err());
168-
169-
let de = ext4.read_dir_entry(ext4_file.inode as _);
170-
for i in de.iter() {
171-
log::info!("{:?}", i.get_name());
150+
let entries = ext4.dir_get_entries(ROOT_INODE);
151+
log::info!("dir ls root");
152+
for entry in entries {
153+
log::info!("{:?}", entry.get_name());
172154
}
173155
```
174156

175157
### file remove
176158
```rust
177159
let path = "test_files/file_to_remove";
178-
let r = ext4.ext4_file_remove(&path);
160+
let r = ext4.file_remove(&path);
179161
```
180162

181163
### dir remove
182164
```rust
183165
let path = "dir_to_remove";
184-
// remove dir from root inode 2
185-
let r = ext4.ext4_dir_remove(2, &path);
166+
let r = ext4.dir_remove(ROOT_INODE, &path);
186167
```

gen_img.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
rm -rf ex4.img
2-
dd if=/dev/zero of=ex4.img bs=1M count=1024
2+
dd if=/dev/zero of=ex4.img bs=1M count=4096
33
mkfs.ext4 ./ex4.img
44
mkdir tmp
55
mount ./ex4.img ./tmp/

gen_test_files.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
for i in range(2):
1010
name = "test_files/"+ str(i) + ".txt"
1111
f = open(name, "w")
12-
f.write(str(i) * 0x20000000)
12+
# 1024M
13+
f.write(str(i) * 0x100000 * 1024)
1314

1415
name = "test_files/file_to_remove"
1516
f = open(name, "w")

src/main.rs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,26 @@ fn main() {
105105
let disk = Arc::new(Disk {});
106106
let ext4 = Ext4::open(disk);
107107

108+
// file read
109+
let path = "test_files/0.txt";
110+
// 1G
111+
const READ_SIZE: usize = (0x100000 * 1024);
112+
let mut read_buf = vec![0u8; READ_SIZE as usize];
113+
let child_inode = ext4.generic_open(path, &mut 2, false, 0, &mut 0).unwrap();
114+
let mut data = vec![0u8; READ_SIZE as usize];
115+
let read_data = ext4.read_at(child_inode, 0 as usize, &mut data);
116+
log::info!("read data {:?}", &data[..10]);
117+
118+
119+
120+
let path = "test_files/linktest";
121+
let mut read_buf = vec![0u8; READ_SIZE as usize];
122+
// 2 is root inode
123+
let child_inode = ext4.generic_open(path, &mut 2, false, 0, &mut 0).unwrap();
124+
let mut data = vec![0u8; READ_SIZE as usize];
125+
let read_data = ext4.read_at(child_inode, 0 as usize, &mut data);
126+
log::info!("read data {:?}", &data[..10]);
127+
108128
// dir make
109129
log::info!("----mkdir----");
110130
for i in 0..10 {

0 commit comments

Comments
 (0)