OK, turing.

<- leave blank

Wed Apr 24 08:51:55 EDT 2024

Xin chào, tôi muốn biết giá của bạn.

Wed Apr 24 07:32:31 EDT 2024
Salut, ech wollt Äre Präis wëssen.

Wed Apr 24 07:25:18 EDT 2024
cpu% lstk
/proc/6783320/text:amd64 plan 9 executable
/sys/lib/acid/port
/sys/lib/acid/amd64
acid: whatpos(corner=0xe039,p=0x0,px=0x7fffffffdf58,py=0x7fffffffdf50)+0x78
/sys/src/cmd/pic/misc.c:213
	y1=0x206a82
	x1=0x43f3b0
	x=0x2000d1
	y=0x0
getpos(corner=0xe039)+0x25 /sys/src/cmd/pic/misc.c:203
	x=0x200000000
	y=0x0
yyparse()+0x13b0 /sys/src/cmd/pic/picy.y:249
	save1=0x0
	save2=0x0
	save3=0x0
	save4=0x0
	yystate=0x33
	yychar=0xffffffff
	yys=0x7fffffffe058
	yyp=0x7fffffffe038
	yyn=0x33fffffc18
	yypt=0x7fffffffe058
getdata()+0x2aa /sys/src/cmd/pic/main.c:218
	buf=0x6e6972000a53502e
	svfile=0x0
	buf1=0x0
	ln=0x0
main(argc=0x1,argv=0x7fffffffef90)+0x22f /sys/src/cmd/pic/main.c:94
	buf=0x303233333837362f
_main+0x6d /sys/src/ape/lib/ap/amd64/main9.s:32
acid:
echo kill > /proc/6783320/ctl


Tue Apr 23 12:40:29 EDT 2024
171182 ms
	ether(s=560002890b77 d=fe0002890b77 pr=0800 ln=62)
	ip(s=144.202.1.203 d=207.219.254.133 id=5dcb frag=0000 ttl=255 pr=6 ln=48)
	tcp(s=80 d=41954 seq=2428236957 ack=786703773 fl=AS win=65535 ck=a20a
	opt4=(mss 1460) opt3=(wscale 4) opt=NOOP)
171209 ms
	ether(s=560002890b77 d=fe0002890b77 pr=0800 ln=60)
	ip(s=144.202.1.203 d=207.219.254.133 id=5dcd frag=0000 ttl=255 pr=6 ln=40)
	tcp(s=80 d=41954 seq=2428236958 ack=0 fl=R win=0 ck=255d)
171235 ms
	ether(s=560002890b77 d=fe0002890b77 pr=0800 ln=60)
	ip(s=144.202.1.203 d=207.219.254.133 id=5dce frag=0000 ttl=255 pr=6 ln=40)
	tcp(s=80 d=41954 seq=2428236958 ack=0 fl=R win=0 ck=255d)







Tue Apr 23 11:53:29 EDT 2024
ether4330: [assoc] error status 1 flags 0x0 reason 18
event:
00 02 00 00 00 00 00 07 00 00 00 01 00 00 00 12
00 00 00 00 00 00 00 a8 bc 34 00 45 21 80 77 6c
30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
11 04 12 00 02 c0 01 08 82 84 8b 96 0c 12 18 24
32 04 30 48 60 6c dd 18 00 50 f2 02 01 01 80 00
03 a4 00 00 27 a4 00 00 42 43 5e 00 62 32 2f 00
2d 1a 6e 18 1f ff ff 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 3d 16 01 05
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 dd 1e 00 90 4c 33 6e 18 1f ff ff 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 dd 1a 00 90 4c 34 01 05 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
dd 06 00 e0 4c 02 01 60 00 00


Tue Apr 23 00:36:47 EDT 2024
diff 032081309174e6f419dc8c981b99dfee367bc518 uncommitted
--- a/sys/src/cmd/6l/l.h
+++ b/sys/src/cmd/6l/l.h
@@ -344,6 +344,7 @@
 void doinit(void);
 void doprof1(void);
 void doprof2(void);
+void doprofcall(void);
 void dostkoff(void);
 void dynreloc(Sym*, ulong, int);
 vlong entryvalue(void);
--- a/sys/src/cmd/6l/obj.c
+++ b/sys/src/cmd/6l/obj.c
@@ -326,6 +326,8 @@
	}
	patch();
	follow();
+ if(debug['p'])
+ doprofcall();
	dodata();
	dostkoff();
	paramspace = "SP"; /* (FP) now (SP) on output */
@@ -1365,6 +1367,36 @@
			continue;
		}
	}
+}
+
+void
+doprofcall(void)
+{
+ Prog *p;
+ ulong calls;
+ Sym *s;
+
+ calls = 0;
+ /* err on the larger size */
+ for(p = firstp; p != P; p = p->link)
+ if(p->as == ACALL)
+ calls++;
+ s = lookup("__ncalls", 0);
+ s->type = SDATA;
+ s->value = 4;
+
+ p = prg();
+ p->line = 0;
+ p->link = datap;
+ datap = p;
+
+ p->as = ADATA;
+ p->width = 4;
+ p->from.scale = 4;
+ p->from.type = D_EXTERN;
+ p->from.sym = s;
+ p->to.type = D_CONST;
+ p->to.offset = calls;
 }

 void
--- a/sys/src/libc/port/profile.c
+++ b/sys/src/libc/port/profile.c
@@ -237,21 +237,14 @@
 void
 _profmain(int argc, char **argv)
 {
+ extern ulong __ncalls;
	char ename[50];
- int n, f;
+ int f;

- n = 2000;
	if (_tos->cyclefreq != 0LL){
		khz = _tos->cyclefreq / 1000; /* Report times in milliseconds
		*/
		havecycles = 1;
	}
- f = open("/env/profsize", OREAD|OCEXEC);
- if(f >= 0) {
- memset(ename, 0, sizeof(ename));
- read(f, ename, sizeof(ename)-1);
- close(f);
- n = atol(ename);
- }
	_tos->prof.what = Profuser;
	f = open("/env/proftype", OREAD|OCEXEC);
	if(f >= 0) {
@@ -267,7 +260,7 @@
		else if (strcmp(ename, "sample") == 0)
			_tos->prof.what = Profsample;
	}
- _tos->prof.first = sbrk(n*sizeof(Plink));
+ _tos->prof.first = sbrk(__ncalls*sizeof(Plink));
	_tos->prof.last = sbrk(0);
	_tos->prof.next = _tos->prof.first;
	_tos->prof.pp = nil;


Mon Apr 22 07:00:01 EDT 2024
Hola, volia saber el seu preu.

Sun Apr 21 21:15:52 EDT 2024
But when the McNamara discipline is applied too literally, the first step is to
measure whatever can be easily measured.  The second step is to disregard that
which can’t easily be measured or given a quantitative value.  The third step is
to presume that what can’t be measured easily really isn’t important.  The
fo[u]rth step is to say that what can’t be easily measured really doesn’t exist.
This is suicide.

Sun Apr 21 13:25:19 EDT 2024
diff a70280308ae782ac422e78ccf19b221697116c1b uncommitted
--- a/sys/src/cmd/ext4srv/common.h
+++ b/sys/src/cmd/ext4srv/common.h
@@ -5,9 +5,7 @@
	char *group;
	int cachewb;
	int asroot;
- int rdonly;
-
- int fstype;
+ int ream;
	int blksz;
	int inodesz;
	u32int ninode;
--- a/sys/src/cmd/ext4srv/ext4srv.c
+++ b/sys/src/cmd/ext4srv/ext4srv.c
@@ -36,9 +36,8 @@
	.group = nil,
	.cachewb = 0,
	.asroot = 0,
- .rdonly = 0,

- .fstype = -1,
+ .ream = 0,
	.blksz = 1024,
	.label = "",
	.inodesz = 256,
@@ -46,7 +45,9 @@
 };
 static u32int Root;
 static u8int zero[65536];
-static char *srvname = "ext4";
+static char *srvname;
+static char *device;
+static Part *devpart;

 static int
 haveperm(Aux *a, int p, struct ext4_inode *inodeout)
@@ -115,27 +116,31 @@
 static void
 rattach(Req *r)
 {
- char err[ERRMAX];
	Aux *a;

	if((a = calloc(1, sizeof(*a))) == nil)
		respond(r, "memory");
- else if((a->p = openpart(r->ifcall.aname, &opts)) == nil){
- free(a);
- rerrstr(err, sizeof(err));
- respond(r, err);
- }else{
- if(opts.asroot || findgroup(&a->p->groups, r->ifcall.uname, &a->uid)
== nil)
- a->uid = Root;
-
- incref(a->p);
- a->type = Adir;
- a->path = estrdup9p("");
- r->ofcall.qid = a->p->qidmask;
- r->fid->qid = a->p->qidmask;
- r->fid->aux = a;
- respond(r, nil);
+ if(r->ifcall.aname && *r->ifcall.aname){
+ if((a->p = openpart(r->ifcall.aname, &opts)) == nil){
+ free(a);
+ responderror(r);
+ return;
+ }
+ }else if((a->p = devpart) == nil){
+ respond(r, "no file specified");
+ return;
	}
+
+ if(opts.asroot || findgroup(&a->p->groups, r->ifcall.uname, &a->uid)
== nil)
+ a->uid = Root;
+
+ incref(a->p);
+ a->type = Adir;
+ a->path = estrdup9p("");
+ r->ofcall.qid = a->p->qidmask;
+ r->fid->qid = a->p->qidmask;
+ r->fid->aux = a;
+ respond(r, nil);
 }

 static u32int
@@ -876,8 +881,8 @@
 static void
 usage(void)
 {
- fprint(2, "usage: %s [-Crs] [-g groupfile] [-R uid] [srvname]\n", argv0);
- fprint(2, "mkfs: %s -M (2|3|4) [-L label] [-b blksize] [-N numinodes] [-I
inodesize] device\n", argv0);
+ fprint(2, "usage: %s [-Cs] [-f file] [-g groupfile] [-n srvname] [-R uid]\n",
argv0);
+ fprint(2, "mkfs: %s [-L label] [-b blksz] [-N ninodes] [-I inodesz] -f file -r
(2|3|4)\n", argv0);
	threadexitsall("usage");
 }

@@ -891,20 +896,22 @@
	rfork(RFNOTEG);

	stdio = 0;
+ device = nil;
	ARGBEGIN{
+ case 'C':
+ opts.cachewb = 1;
+ break;
	case 'D':
		chatty9p++;
-nomkfs:
- if(opts.fstype > 0)
- usage();
- opts.fstype = 0;
		break;
	case 'd':
		ext4_dmask_set(strtoul(EARGF(usage()), nil, 0));
		break;
- case 'C':
- opts.cachewb = 1;
- goto nomkfs;
+ case 'f':
+ if(device != nil)
+ usage();
+ device = EARGF(usage());
+ break;
	case 'g':
		gr = EARGF(usage());
		if((f = open(gr, OREAD)) < 0)
@@ -919,23 +926,20 @@
			sysfatal("%s: read failed", gr);
		close(f);
		opts.group[sz] = 0;
- goto nomkfs;
+ break;
+ case 'n':
+ if(stdio != 0)
+ usage();
+ srvname = EARGF(usage());
+ break;
	case 'R':
		opts.asroot = 1;
		Root = atoll(EARGF(usage()));
- goto nomkfs;
- case 'r':
- opts.rdonly = 1;
- goto nomkfs;
+ break;
	case 's':
		stdio = 1;
- goto nomkfs;
- case 'M':
- if(!opts.fstype)
+ if(srvname != nil)
			usage();
- opts.fstype = atoi(EARGF(usage()));
- if(opts.fstype < 2 || opts.fstype > 4)
- usage();
		break;

	case 'b':
@@ -942,47 +946,48 @@
		opts.blksz = atoi(EARGF(usage()));
		if(opts.blksz != 1024 && opts.blksz != 2048 && opts.blksz != 4096)
			usage();
-yesmkfs:
- if(opts.fstype < 1)
- usage();
		break;
- case 'L':
- opts.label = EARGF(usage());
- goto yesmkfs;
	case 'I':
		opts.inodesz = atoi(EARGF(usage()));
		if(opts.inodesz < 128 || ((opts.inodesz-1) & opts.inodesz) !=
		0)
			usage();
- goto yesmkfs;
+ break;
+ case 'L':
+ opts.label = EARGF(usage());
+ break;
	case 'N':
		opts.ninode = atoi(EARGF(usage()));
		if(opts.ninode < 1)
			usage();
- goto yesmkfs;
+ break;
+ case 'r':
+ if(opts.ream > 0)
+ usage();
+ opts.ream = atoi(EARGF(usage()));
+ if(opts.ream < 2 || opts.ream > 4)
+ usage();
+ break;

	default:
		usage();
	}ARGEND

- if(opts.fstype > 1){
- if(argc != 1)
- usage();
- if(openpart(argv[0], &opts) == nil)
- sysfatal("%r");
- closeallparts();
- threadexitsall(nil);
- }else{
- if(!stdio && argc == 1)
- srvname = *argv;
- else if(argc != 0)
- usage();
+ if(argc != 0)
+ usage();

- if(stdio){
- fs.infd = 0;
- fs.outfd = 1;
- threadsrv(&fs);
- }else
- threadpostsrv(&fs, srvname);
- threadexits(nil);
+ if(device == nil && opts.ream > 1)
+ usage();
+ if(device != nil && (devpart = openpart(device, &opts)) == nil)
+ sysfatal("%r");
+
+ if(stdio){
+ fs.infd = 0;
+ fs.outfd = 1;
+ threadsrv(&fs);
+ }else{
+ if(srvname == nil)
+ srvname = "ext4";
+ threadpostsrv(&fs, srvname);
	}
+ threadexits(nil);
 }
--- a/sys/src/cmd/ext4srv/part.c
+++ b/sys/src/cmd/ext4srv/part.c
@@ -203,7 +203,7 @@
	int r;

	mp = &p->mp;
- if(ext4_mount(mp, &p->bdev, opts->rdonly) < 0){
+ if(ext4_mount(mp, &p->bdev, 0) < 0){
		werrstr("mount: %r");
		goto error;
	}
@@ -307,7 +307,7 @@
		p->partdev = (char*)(p+1) + blksz;
		strcpy(p->partdev, dev);

- if(opts->fstype > 1){
+ if(opts->ream > 1){
			memset(&fs, 0, sizeof(fs));
			memset(&info, 0, sizeof(info));
			info.block_size = opts->blksz;
@@ -314,12 +314,12 @@
			snprint(info.label, sizeof(info.label), opts->label);
			info.inode_size = opts->inodesz;
			info.inodes = opts->ninode;
- info.journal = opts->fstype > 2;
+ info.journal = opts->ream > 2;
			for(i = 0; i < 16; i += 4){
				rn = truerand();
				memcpy(info.uuid+i, &rn, 4);
			}
- if(ext4_mkfs(&fs, &p->bdev, &info, opts->fstype) < 0){
+ if(ext4_mkfs(&fs, &p->bdev, &info, opts->ream) < 0){
				werrstr("mkfs: %r");
				goto error;
			}


Sun Apr 21 12:46:18 EDT 2024
diff e4509d40cc9759baddf1c2571247b95d2f5b61a5 uncommitted
--- a/sys/src/cmd/stats.c
+++ b/sys/src/cmd/stats.c
@@ -22,6 +22,7 @@
	Machine *mach;
	int overflow;
	Image *overtmp;
+ uvlong hiwater;
 };

 enum
@@ -399,7 +400,112 @@

 }

+/* round vmax such that ylabel's have at most 3 non-zero digits */
+uvlong
+roundvmax(uvlong v)
+{
+ int e, o;
+
+ e = ceil(log10(v)) - 2;
+ if(e <= 0)
+ return v + (v % 4);
+ o = pow10(e);
+ v /= o;
+ v &= ~1;
+ return v * o;
+}
+
+
 void
+labelstrs(Graph *g, char strs[Nlab][Lablen], int *np)
+{
+ int j;
+ uvlong v, vmax;
+
+ g->newvalue(g->mach, &v, &vmax, 1);
+ if(vmax == 0)
+ vmax = 1;
+ if(g->hiwater > vmax)
+ vmax = g->hiwater;
+ vmax = roundvmax(vmax);
+ if(logscale){
+ for(j=1; j<=2; j++)
+ sprint(strs[j-1], "%g", scale*pow10(j)*(double)vmax/100.);
+ *np = 2;
+ }else{
+ for(j=1; j<=3; j++)
+ sprint(strs[j-1], "%g", scale*j*(double)vmax/4.0);
+ *np = 3;
+ }
+}
+
+int
+labelwidth(void)
+{
+ int i, j, n, w, maxw;
+ char strs[Nlab][Lablen];
+
+ maxw = 0;
+ for(i=0; i<ngraph; i++){
+ /* choose value for rightmost graph */
+ labelstrs(&graph[ngraph*(nmach-1)+i], strs, &n);
+ for(j=0; j<n; j++){
+ w = stringwidth(font, strs[j]);
+ if(w > maxw)
+ maxw = w;
+ }
+ }
+ return maxw;
+}
+
+int
+drawlabels(int maxx)
+{
+ int x, j, k, y, dy, dx, starty, startx, nlab, ly;
+ int wid;
+ Graph *g;
+ char labs[Nlab][Lablen];
+ Rectangle r;
+
+ /* label left edge */
+ x = screen->r.min.x;
+ y = screen->r.min.y + Labspace+font->height+Labspace;
+ dy = (screen->r.max.y - y)/ngraph;
+ dx = Labspace+stringwidth(font, "0")+Labspace;
+ startx = x+dx+1;
+ starty = y;
+ dx = (screen->r.max.x - startx)/nmach;
+
+ if(!dy>Nlab*(font->height+1))
+ return maxx;
+
+ /* if there's not enough room */
+ if((wid = labelwidth()) >= dx-10)
+ return maxx;
+
+ maxx -= 1+Lx+wid;
+ draw(screen, Rect(maxx, starty, maxx+1, screen->r.max.y), display->black,
nil, ZP);
+ y = starty;
+ for(j=0; j<ngraph; j++, y+=dy){
+ /* choose value for rightmost graph */
+ g = &graph[ngraph*(nmach-1)+j];
+ labelstrs(g, labs, &nlab);
+ r = Rect(maxx+1, y, screen->r.max.x, y+dy-1);
+ if(j == ngraph-1)
+ r.max.y = screen->r.max.y;
+ draw(screen, r, cols[g->colindex][0], nil, paritypt(r.min.x));
+ for(k=0; k<nlab; k++){
+ ly = y + (dy*(nlab-k)/(nlab+1));
+ draw(screen, Rect(maxx+1, ly, maxx+1+Lx, ly+1), display->black, nil, ZP);
+ ly -= font->height/2;
+ string(screen, Pt(maxx+1+Lx, ly), display->black, ZP, font, labs[k]);
+ }
+ }
+ return maxx;
+}
+
+
+void
 redraw(Graph *g, uvlong vmax)
 {
	int i, c;
@@ -418,6 +524,19 @@
	char buf[48];
	int overflow;

+ overflow = 0;
+ if(v > g->hiwater){
+ g->hiwater = v;
+ if(v > vmax){
+ overflow = 1;
+ g->hiwater = v;
+ if(ylabels)
+ drawlabels(screen->r.max.x);
+ redraw(g, g->hiwater);
+ }
+ }
+ if(g->hiwater > vmax)
+ vmax = g->hiwater;
	if(g->overflow && g->overtmp!=nil)
		draw(screen, g->overtmp->r, g->overtmp, nil,
		g->overtmp->r.min);
	draw(screen, g->r, screen, nil, Pt(g->r.min.x+1, g->r.min.y));
@@ -425,10 +544,6 @@
	memmove(g->data+1, g->data, (g->ndata-1)*sizeof(g->data[0]));
	g->data[0] = v;
	g->overflow = 0;
- if(logscale)
- overflow = (v>10*vmax*scale);
- else
- overflow = (v>vmax*scale);
	if(overflow && g->overtmp!=nil){
		g->overflow = 1;
		draw(g->overtmp, g->overtmp->r, screen, nil,
		g->overtmp->r.min);
@@ -1049,52 +1164,13 @@
 }

 void
-labelstrs(Graph *g, char strs[Nlab][Lablen], int *np)
-{
- int j;
- uvlong v, vmax;
-
- g->newvalue(g->mach, &v, &vmax, 1);
- if(vmax == 0)
- vmax = 1;
- if(logscale){
- for(j=1; j<=2; j++)
- sprint(strs[j-1], "%g", scale*pow(10., j)*(double)vmax/100.);
- *np = 2;
- }else{
- for(j=1; j<=3; j++)
- sprint(strs[j-1], "%g", scale*(double)j*(double)vmax/4.0);
- *np = 3;
- }
-}
-
-int
-labelwidth(void)
-{
- int i, j, n, w, maxw;
- char strs[Nlab][Lablen];
-
- maxw = 0;
- for(i=0; i<ngraph; i++){
- /* choose value for rightmost graph */
- labelstrs(&graph[ngraph*(nmach-1)+i], strs, &n);
- for(j=0; j<n; j++){
- w = stringwidth(font, strs[j]);
- if(w > maxw)
- maxw = w;
- }
- }
- return maxw;
-}
-
-void
 resize(void)
 {
- int i, j, k, n, startx, starty, x, y, dx, dy, ly, ondata, maxx, wid, nlab;
+ int i, j, n, startx, starty, x, y, dx, dy, ondata, maxx;
	Graph *g;
	Rectangle machr, r;
	uvlong v, vmax;
- char buf[128], labs[Nlab][Lablen];
+ char buf[128];

	draw(screen, screen->r, display->white, nil, ZP);

@@ -1129,33 +1205,9 @@
	}

	maxx = screen->r.max.x;
+ if(ylabels)
+ maxx = drawlabels(maxx);

- /* label right, if requested */
- if(ylabels && dy>Nlab*(font->height+1)){
- wid = labelwidth();
- if(wid < dx-10){
- /* else there's not enough room */
- maxx -= 1+Lx+wid;
- draw(screen, Rect(maxx, starty, maxx+1, screen->r.max.y), display->black,
nil, ZP);
- y = starty;
- for(j=0; j<ngraph; j++, y+=dy){
- /* choose value for rightmost graph */
- g = &graph[ngraph*(nmach-1)+j];
- labelstrs(g, labs, &nlab);
- r = Rect(maxx+1, y, screen->r.max.x, y+dy-1);
- if(j == ngraph-1)
- r.max.y = screen->r.max.y;
- draw(screen, r, cols[g->colindex][0], nil, paritypt(r.min.x));
- for(k=0; k<nlab; k++){
- ly = y + (dy*(nlab-k)/(nlab+1));
- draw(screen, Rect(maxx+1, ly, maxx+1+Lx, ly+1), display->black, nil, ZP);
- ly -= font->height/2;
- string(screen, Pt(maxx+1+Lx, ly), display->black, ZP, font, labs[k]);
- }
- }
- }
- }
-
	/* create graphs */
	for(i=0; i<nmach; i++){
		machr = Rect(startx+i*dx, starty, startx+(i+1)*dx - 1,
		screen->r.max.y);
@@ -1188,6 +1240,9 @@
			g->newvalue(g->mach, &v, &vmax, 0);
			if(vmax == 0)
				vmax = 1;
+ if(g->hiwater > vmax)
+ vmax = g->hiwater;
+ vmax = roundvmax(vmax);
			redraw(g, vmax);
		}
	}
@@ -1415,6 +1470,7 @@
			graph[i].newvalue(graph[i].mach, &v, &vmax, 0);
			if(vmax == 0)
				vmax = 1;
+ vmax = roundvmax(vmax);
			graph[i].update(&graph[i], v, vmax);
		}
		flushimage(display, 1);


Sun Apr 21 12:37:26 EDT 2024
diff a288db973cf0436575a3e660d2a1c68adbee9e56 uncommitted
--- a/rc/bin/fstype
+++ b/rc/bin/fstype
@@ -6,7 +6,7 @@
	echo 9660
	exit
 }
-dd -if $1 -count 1 >/env/block >[2]/dev/null
+dd -if $1 -count 3 >/env/block >[2]/dev/null
 fn fat {
	m=`{dd -if /env/block -bs 1 -count 3 -skip $1 >[2]/dev/null}
	~ $"m FAT
@@ -31,6 +31,11 @@
 m=`{dd -if /env/block -bs 16 -count 1 -skip 16 >[2]/dev/null}
 if(~ $"m 'kfs wren device'){
	echo kfs
+ exit
+}
+m=`{dd -if /env/block -bs 1 -count 2 -skip 1080 >[2]/dev/null | xd | sed
's,0000000 ,,;q'}
+if(~ $"m 53ef0000){
+ echo ext4srv
	exit
 }
 </env/block awk '


prev | next