mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-25 16:13:17 +00:00
Modify the alq(9) alq_open() API to accept a file creation mode, rather
than defaulting the cmode argument to vn_open() to 0. Supply a default argument of ALQ_DEFAULT_CMODE (0600) in current callers. Discussed with/pointed out by: hmp Reveiwed by: jeff, hmp MFC after: 3 days
This commit is contained in:
parent
babcc5ad79
commit
e551d45211
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=145142
@ -44,6 +44,7 @@
|
||||
.Fa "struct alq **app"
|
||||
.Fa "const char *file"
|
||||
.Fa "struct ucred *cred"
|
||||
.Fa "int cmode"
|
||||
.Fa "int size"
|
||||
.Fa "int count"
|
||||
.Fc
|
||||
@ -98,10 +99,22 @@ The
|
||||
function creates a new logging queue.
|
||||
The
|
||||
.Fa file
|
||||
argument is the name of the file to open for logging.
|
||||
argument is the name of the file to open for logging; if the file does not
|
||||
yet exist,
|
||||
.Fn alq_open
|
||||
will attempt to create it.
|
||||
The
|
||||
.Fa cmode
|
||||
argument will be passed to
|
||||
.Fn vn_open
|
||||
as the requested creation mode, to be used if the file will be created by
|
||||
.Fn alq_open .
|
||||
Consumers of this API may wish to pass
|
||||
.Dv ALQ_DEFAULT_CMODE ,
|
||||
a default creation mode suitable for most applications.
|
||||
The argument
|
||||
.Fa cred
|
||||
specifies the credentials to use when opening the file.
|
||||
specifies the credentials to use when opening and performing I/O on the file.
|
||||
The size of each entry in the queue is determined by
|
||||
.Fa size .
|
||||
The
|
||||
|
@ -185,7 +185,7 @@ ath_hal_setlogging(int enable)
|
||||
error = suser(curthread);
|
||||
if (error == 0) {
|
||||
error = alq_open(&ath_hal_alq, ath_hal_logfile,
|
||||
curthread->td_ucred,
|
||||
curthread->td_ucred, ALQ_DEFAULT_CMODE,
|
||||
sizeof (struct athregrec), ath_hal_alq_qsize);
|
||||
ath_hal_alq_lost = 0;
|
||||
ath_hal_alq_emitdev = 1;
|
||||
|
@ -334,8 +334,8 @@ SYSINIT(ald, SI_SUB_LOCK, SI_ORDER_ANY, ald_startup, NULL)
|
||||
* Create the queue data structure, allocate the buffer, and open the file.
|
||||
*/
|
||||
int
|
||||
alq_open(struct alq **alqp, const char *file, struct ucred *cred, int size,
|
||||
int count)
|
||||
alq_open(struct alq **alqp, const char *file, struct ucred *cred, int cmode,
|
||||
int size, int count)
|
||||
{
|
||||
struct thread *td;
|
||||
struct nameidata nd;
|
||||
@ -353,7 +353,7 @@ alq_open(struct alq **alqp, const char *file, struct ucred *cred, int size,
|
||||
NDINIT(&nd, LOOKUP, NOFOLLOW, UIO_SYSSPACE, file, td);
|
||||
flags = FWRITE | O_NOFOLLOW | O_CREAT;
|
||||
|
||||
error = vn_open_cred(&nd, &flags, 0, cred, -1);
|
||||
error = vn_open_cred(&nd, &flags, cmode, cred, -1);
|
||||
if (error)
|
||||
return (error);
|
||||
|
||||
|
@ -145,8 +145,8 @@ sysctl_debug_ktr_alq_enable(SYSCTL_HANDLER_ARGS)
|
||||
if (error)
|
||||
return (error);
|
||||
error = alq_open(&ktr_alq, (const char *)ktr_alq_file,
|
||||
req->td->td_ucred, sizeof(struct ktr_entry),
|
||||
ktr_alq_depth);
|
||||
req->td->td_ucred, ALQ_DEFAULT_CMODE,
|
||||
sizeof(struct ktr_entry), ktr_alq_depth);
|
||||
if (error == 0) {
|
||||
ktr_mask &= ~KTR_ALQ_MASK;
|
||||
ktr_alq_cnt = 0;
|
||||
|
@ -53,12 +53,17 @@ struct ale {
|
||||
#define ALQ_NOWAIT 0x0001
|
||||
#define ALQ_WAITOK 0x0002
|
||||
|
||||
/* Suggested mode for file creation. */
|
||||
#define ALQ_DEFAULT_CMODE 0600
|
||||
|
||||
/*
|
||||
* alq_open: Creates a new queue
|
||||
*
|
||||
* Arguments:
|
||||
* alq Storage for a pointer to the newly created queue.
|
||||
* file The filename to open for logging.
|
||||
* cred Credential to authorize open and I/O with.
|
||||
* cmode Creation mode for file, if new.
|
||||
* size The size of each entry in the queue.
|
||||
* count The number of items in the buffer, this should be large enough
|
||||
* to store items over the period of a disk write.
|
||||
@ -66,8 +71,8 @@ struct ale {
|
||||
* error from open or 0 on success
|
||||
*/
|
||||
struct ucred;
|
||||
int alq_open(struct alq **, const char *file, struct ucred *cred, int size,
|
||||
int count);
|
||||
int alq_open(struct alq **, const char *file, struct ucred *cred, int cmode,
|
||||
int size, int count);
|
||||
|
||||
/*
|
||||
* alq_write: Write data into the queue
|
||||
|
Loading…
Reference in New Issue
Block a user