Hello,

I need to trace the kernel function "rl_log_control" which is defined in /usr/src/cmd/fs.d/ufs/roll_log/roll_log.c however dtrace can't find that probe

bash-3.00# dtrace -l -n ::rl_log_control:
   ID   PROVIDER            MODULE                          FUNCTION NAME
dtrace: failed to match ::rl_log_control:: No probe matches description

Do you have any suggest?

 433 rl_result_t
 434 rl_log_control(char *bdev, int request)
 435 {
 436         log_info_t      li;
 437         rl_result_t     rv = RL_SUCCESS;
 438         rl_result_t     alreadymounted;
 439         int             fd;
 440         fiolog_t        fl;
 441         int             logenabled;
 442 
 443         if ((request != _FIOLOGENABLE) && (request != _FIOLOGDISABLE))
 444                 return (RL_FAIL);
 445 
 446         (void) memset((void *)&li, '\0', (size_t)sizeof (li));
 447         if ((alreadymounted = is_mounted(&li, bdev)) != RL_TRUE) {
 448                 /*
 449                  * Device is not mounted. Need to mount it rw to allow
 450                  * the log to be enabled/disabled. To do the mount, we need
 451                  * to create a temporary directory, and then remove it when
 452                  * we are done.
 453                  */
 454                 if (make_mp(&li) != RL_SUCCESS) {
 455                         cleanup(&li);
 456                         return (RL_FAIL);
 457                 }
 458                 if (rlmount(&li, RLM_RW) != RL_SUCCESS) {
 459                         cleanup(&li);
 460                         return (RL_FAIL);
 461                 }
 462         }
 463 
 464         if (alreadymounted == RL_TRUE)
 465                 fd = open(li.li_mntpoint, O_RDONLY);
 466         else
 467                 fd = open(li.li_tmpmp, O_RDONLY);
 468         if (fd == SYSERR) {
 469                 perror("open");
 470                 rv = RL_SYSERR;
 471                 goto out;
 472         }
 473 
 474         fl.nbytes_requested = 0;
 475         fl.nbytes_actual = 0;
 476         fl.error = FIOLOG_ENONE;
 477 
 478         if (ioctl(fd, request, &fl) == SYSERR) {
 479                 perror("ioctl");
 480                 (void) close(fd);
 481                 rv = RL_SYSERR;
 482                 goto out;
 483         }
 484         if (ioctl(fd, _FIOISLOG, &logenabled) == SYSERR) {
 485                 perror("ioctl");
 486                 (void) close(fd);
 487                 rv = RL_SYSERR;
 488                 goto out;
 489         }
 490         if (((request == _FIOLOGENABLE) && (!logenabled)) ||
 491             ((request == _FIOLOGDISABLE) && logenabled))
 492                 rv = RL_FAIL;
 493 
 494         (void) close(fd);
 495 out:
 496         if (alreadymounted != RL_TRUE)
 497                 (void) rlumount(&li);
 498         cleanup(&li);
 499         return (rv);
 500 }
--

Andrea Cucciarre'
Storage Engineer
Sun Microsystems Italia S.p.A.
Viale Fulvio Testi, 327
20162 Milano, Italy
Phone +39 800605338
Fax     +39 0264152204
[EMAIL PROTECTED] [EMAIL PROTECTED]
_______________________________________________
dtrace-discuss mailing list
[email protected]

Reply via email to