Blame


1 056fe1ba 2003-11-23 devnull #include <u.h>
2 056fe1ba 2003-11-23 devnull #include <libc.h>
3 056fe1ba 2003-11-23 devnull #include <venti.h>
4 056fe1ba 2003-11-23 devnull
5 056fe1ba 2003-11-23 devnull void
6 056fe1ba 2003-11-23 devnull vtzeroextend(int type, uchar *buf, uint n, uint nn)
7 056fe1ba 2003-11-23 devnull {
8 056fe1ba 2003-11-23 devnull uchar *p, *ep;
9 056fe1ba 2003-11-23 devnull
10 056fe1ba 2003-11-23 devnull switch(type&7) {
11 056fe1ba 2003-11-23 devnull case 0:
12 056fe1ba 2003-11-23 devnull memset(buf+n, 0, nn-n);
13 056fe1ba 2003-11-23 devnull break;
14 056fe1ba 2003-11-23 devnull default:
15 056fe1ba 2003-11-23 devnull p = buf + (n/VtScoreSize)*VtScoreSize;
16 056fe1ba 2003-11-23 devnull ep = buf + (nn/VtScoreSize)*VtScoreSize;
17 056fe1ba 2003-11-23 devnull while(p < ep) {
18 056fe1ba 2003-11-23 devnull memmove(p, vtzeroscore, VtScoreSize);
19 056fe1ba 2003-11-23 devnull p += VtScoreSize;
20 056fe1ba 2003-11-23 devnull }
21 056fe1ba 2003-11-23 devnull memset(p, 0, buf+nn-p);
22 056fe1ba 2003-11-23 devnull break;
23 056fe1ba 2003-11-23 devnull }
24 056fe1ba 2003-11-23 devnull }
25 056fe1ba 2003-11-23 devnull
26 fa325e9b 2020-01-10 cross uint
27 056fe1ba 2003-11-23 devnull vtzerotruncate(int type, uchar *buf, uint n)
28 056fe1ba 2003-11-23 devnull {
29 056fe1ba 2003-11-23 devnull uchar *p;
30 056fe1ba 2003-11-23 devnull
31 056fe1ba 2003-11-23 devnull if(type == VtRootType){
32 056fe1ba 2003-11-23 devnull if(n < VtRootSize)
33 056fe1ba 2003-11-23 devnull return n;
34 056fe1ba 2003-11-23 devnull return VtRootSize;
35 056fe1ba 2003-11-23 devnull }
36 056fe1ba 2003-11-23 devnull
37 056fe1ba 2003-11-23 devnull switch(type&7){
38 056fe1ba 2003-11-23 devnull case 0:
39 056fe1ba 2003-11-23 devnull for(p = buf + n; p > buf; p--) {
40 056fe1ba 2003-11-23 devnull if(p[-1] != 0)
41 056fe1ba 2003-11-23 devnull break;
42 056fe1ba 2003-11-23 devnull }
43 056fe1ba 2003-11-23 devnull return p - buf;
44 056fe1ba 2003-11-23 devnull default:
45 056fe1ba 2003-11-23 devnull /* ignore slop at end of block */
46 056fe1ba 2003-11-23 devnull p = buf + (n/VtScoreSize)*VtScoreSize;
47 056fe1ba 2003-11-23 devnull
48 056fe1ba 2003-11-23 devnull while(p > buf) {
49 056fe1ba 2003-11-23 devnull if(memcmp(p - VtScoreSize, vtzeroscore, VtScoreSize) != 0)
50 056fe1ba 2003-11-23 devnull break;
51 056fe1ba 2003-11-23 devnull p -= VtScoreSize;
52 056fe1ba 2003-11-23 devnull }
53 056fe1ba 2003-11-23 devnull return p - buf;
54 056fe1ba 2003-11-23 devnull }
55 056fe1ba 2003-11-23 devnull }