geom_subr.c (4ec353005cc7d720a55f03f52db5d28f9e4af6e3) | geom_subr.c (8ebd558f5d8f5050400d7373b52a7935ab69cb15) |
---|---|
1/*- 2 * Copyright (c) 2002 Poul-Henning Kamp 3 * Copyright (c) 2002 Networks Associates Technology, Inc. 4 * All rights reserved. 5 * 6 * This software was developed for the FreeBSD Project by Poul-Henning Kamp 7 * and NAI Labs, the Security Research Division of Network Associates, Inc. 8 * under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the --- 404 unchanged lines hidden (view full) --- 413 414 g_trace(G_T_ACCESS, 415 "open delta:[r%dw%de%d] old:[r%dw%de%d] provider:[r%dw%de%d] %p(%s)", 416 dcr, dcw, dce, 417 cp->acr, cp->acw, cp->ace, 418 pp->acr, pp->acw, pp->ace, 419 pp, pp->name); 420 | 1/*- 2 * Copyright (c) 2002 Poul-Henning Kamp 3 * Copyright (c) 2002 Networks Associates Technology, Inc. 4 * All rights reserved. 5 * 6 * This software was developed for the FreeBSD Project by Poul-Henning Kamp 7 * and NAI Labs, the Security Research Division of Network Associates, Inc. 8 * under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the --- 404 unchanged lines hidden (view full) --- 413 414 g_trace(G_T_ACCESS, 415 "open delta:[r%dw%de%d] old:[r%dw%de%d] provider:[r%dw%de%d] %p(%s)", 416 dcr, dcw, dce, 417 cp->acr, cp->acw, cp->ace, 418 pp->acr, pp->acw, pp->ace, 419 pp, pp->name); 420 |
421 /* If foot-shooting is enabled, any open on rank#1 is OK */ 422 if ((g_debugflags & 16) && pp->geom->rank == 1) 423 ; |
|
421 /* If we try exclusive but already write: fail */ | 424 /* If we try exclusive but already write: fail */ |
422 if (dce > 0 && pw > 0) | 425 else if (dce > 0 && pw > 0) |
423 return (EPERM); 424 /* If we try write but already exclusive: fail */ | 426 return (EPERM); 427 /* If we try write but already exclusive: fail */ |
425 if (dcw > 0 && pe > 0) | 428 else if (dcw > 0 && pe > 0) |
426 return (EPERM); 427 /* If we try to open more but provider is error'ed: fail */ | 429 return (EPERM); 430 /* If we try to open more but provider is error'ed: fail */ |
428 if ((dcr > 0 || dcw > 0 || dce > 0) && pp->error != 0) | 431 else if ((dcr > 0 || dcw > 0 || dce > 0) && pp->error != 0) |
429 return (pp->error); 430 431 /* Ok then... */ 432 433 /* 434 * If we open first write, spoil any partner consumers. 435 * If we close last write, trigger re-taste. 436 */ --- 319 unchanged lines hidden --- | 432 return (pp->error); 433 434 /* Ok then... */ 435 436 /* 437 * If we open first write, spoil any partner consumers. 438 * If we close last write, trigger re-taste. 439 */ --- 319 unchanged lines hidden --- |